@wix/web5-core 1.63.16 → 1.63.18
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/dist/cjs/index.js +32 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/privacy/consentGate.js +275 -0
- package/dist/cjs/privacy/consentGate.js.map +1 -0
- package/dist/cjs/privacy/consentOverride.js +94 -0
- package/dist/cjs/privacy/consentOverride.js.map +1 -0
- package/dist/cjs/privacy/detectProvider.js +71 -0
- package/dist/cjs/privacy/detectProvider.js.map +1 -0
- package/dist/cjs/privacy/index.js +40 -0
- package/dist/cjs/privacy/index.js.map +1 -0
- package/dist/cjs/privacy/providers/hostSuppliedProvider.js +93 -0
- package/dist/cjs/privacy/providers/hostSuppliedProvider.js.map +1 -0
- package/dist/cjs/privacy/providers/oneTrustProvider.js +72 -0
- package/dist/cjs/privacy/providers/oneTrustProvider.js.map +1 -0
- package/dist/cjs/privacy/providers/shopifyProvider.js +181 -0
- package/dist/cjs/privacy/providers/shopifyProvider.js.map +1 -0
- package/dist/cjs/privacy/types.js +34 -0
- package/dist/cjs/privacy/types.js.map +1 -0
- package/dist/cjs/utils/analyticsEvents.js +30 -25
- package/dist/cjs/utils/analyticsEvents.js.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/privacy/consentGate.js +265 -0
- package/dist/esm/privacy/consentGate.js.map +1 -0
- package/dist/esm/privacy/consentOverride.js +87 -0
- package/dist/esm/privacy/consentOverride.js.map +1 -0
- package/dist/esm/privacy/detectProvider.js +65 -0
- package/dist/esm/privacy/detectProvider.js.map +1 -0
- package/dist/esm/privacy/index.js +8 -0
- package/dist/esm/privacy/index.js.map +1 -0
- package/dist/esm/privacy/providers/hostSuppliedProvider.js +85 -0
- package/dist/esm/privacy/providers/hostSuppliedProvider.js.map +1 -0
- package/dist/esm/privacy/providers/oneTrustProvider.js +66 -0
- package/dist/esm/privacy/providers/oneTrustProvider.js.map +1 -0
- package/dist/esm/privacy/providers/shopifyProvider.js +178 -0
- package/dist/esm/privacy/providers/shopifyProvider.js.map +1 -0
- package/dist/esm/privacy/types.js +30 -0
- package/dist/esm/privacy/types.js.map +1 -0
- package/dist/esm/utils/analyticsEvents.js +30 -25
- package/dist/esm/utils/analyticsEvents.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/privacy/consentGate.d.ts +85 -0
- package/dist/types/privacy/consentGate.d.ts.map +1 -0
- package/dist/types/privacy/consentOverride.d.ts +33 -0
- package/dist/types/privacy/consentOverride.d.ts.map +1 -0
- package/dist/types/privacy/detectProvider.d.ts +25 -0
- package/dist/types/privacy/detectProvider.d.ts.map +1 -0
- package/dist/types/privacy/index.d.ts +8 -0
- package/dist/types/privacy/index.d.ts.map +1 -0
- package/dist/types/privacy/providers/hostSuppliedProvider.d.ts +29 -0
- package/dist/types/privacy/providers/hostSuppliedProvider.d.ts.map +1 -0
- package/dist/types/privacy/providers/oneTrustProvider.d.ts +15 -0
- package/dist/types/privacy/providers/oneTrustProvider.d.ts.map +1 -0
- package/dist/types/privacy/providers/shopifyProvider.d.ts +26 -0
- package/dist/types/privacy/providers/shopifyProvider.d.ts.map +1 -0
- package/dist/types/privacy/types.d.ts +32 -0
- package/dist/types/privacy/types.d.ts.map +1 -0
- package/dist/types/utils/analyticsEvents.d.ts +9 -0
- package/dist/types/utils/analyticsEvents.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/cjs/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports.
|
|
5
|
-
exports.
|
|
6
|
-
exports.writeProductBackHandoff = exports.validatePatternWithBlocks = exports.validatePatternSyntax = exports.validatePattern = exports.validateLinkUrl = exports.usesStagingBackend = exports.useWeb5Link = exports.useUserQuery = exports.useResolvedImageSources = exports.useResolveShopifyEntityData = exports.useResolveSearchSpringEntityData = exports.useResolveGenericEntityData = exports.usePlacementPayload = exports.useMarkdownUtils = exports.useFeatureToggles = exports.useFeatureToggle = exports.useEntityTransforms = exports.useDebugImageContext = exports.useConversation = exports.useComponentDependencies = exports.useChips = exports.tryParseComponent = exports.trimTrailingWhitespace = exports.transformToSolutionEntityData = exports.transformToGenericEntityData = exports.transformToBlogPostEntityData = exports.transformShopifyProduct = exports.transformShopifyEntityToItemData = exports.transformShopifyCollection = exports.transformShopifyArticle = exports.transformSSProductToEntityItemData = exports.toRgb = exports.toMatchedOptions = exports.stripMarkdown = exports.startNewChatId = exports.shouldRefreshPrompts = exports.setMatchDebug = exports.setForwardStack = exports.setChatId = exports.setBackendEnvironment = exports.rgbToHsl = exports.resolveShopifyEntity = exports.resolveShopifyConfig = exports.resolveErrorTemplate = exports.resolveClientBundleUrl = exports.resetMatchDebugCache = exports.resetChatIdForTests = exports.registerEntityExtractor = exports.readProductBackHandoff = exports.readCurrencyCode = exports.pushToForwardStack = exports.pushPromptSubmit = exports.pushLinkClick = exports.pushExit = exports.pushEvent = exports.pushError = exports.pushEntityFiltered = exports.preprocessMarkdown = exports.popFromForwardStack = exports.parseWeb5Url = exports.parseMarkdownToComponents = exports.parseMarkdownToAst = exports.parseEntityLink = exports.parseAstToMarkdown = exports.normalizeImageUrl = exports.normalizeIconUrls = void 0;
|
|
4
|
+
exports.applyThemeOverrides = exports.analyzeBackdrop = exports.addToCart = exports.Web5UrlType = exports.WEB5_USER_QUERY_EVENT = exports.WEB5_SCOPES = exports.WEB5_SCOPE = exports.WEB5_ROOT_ID = exports.WEB5_ROOT_CLASS = exports.WEB5_REDIRECT_EVENT = exports.WEB5_GLOBAL_TOKENS = exports.WEB5_ANSWER_UPDATED_EVENT = exports.UserQueryProvider = exports.UserQuery = exports.UnifiedMarkdownParser = exports.UnifiedLink = exports.UNKNOWN_CONSENT = exports.TextBlockSectionDefinition = exports.TableRow = exports.TableHeader = exports.TableHead = exports.TableFooter = exports.TableCell = exports.TableCaption = exports.TableBody = exports.Table = exports.TOKEN_NAME_PATTERN = exports.THEME_TOKEN_CONTRACT = exports.THEME_OVERRIDE_TOKENS = exports.THEME_DEBUG_QUERY_PARAM = exports.THEME_DEBUG_KEY = exports.TEMPLATES_MANIFEST_URL = exports.TEMPLATES_CDN_BASE = exports.SmartIcon = exports.SkipNodesSectionDefinition = exports.ShopifyStorefrontClient = exports.SectionSkeleton = exports.SearchSectionDefinition = exports.SearchSection = exports.STREAMING_TIMEOUT_MS = exports.REFRESH_PROMPTS_WINDOW_MS = exports.REFRESH_PROMPTS_UNTIL_KEY = exports.PromptEntryEmptyState = exports.PlacementSmoothHeight = exports.PlacementResponseRenderer = exports.PlacementPayloadProvider = exports.PlacementLoader = exports.PRODUCT_BY_HANDLE_QUERY = exports.PRODUCT_BACK_SESSION_KEY = exports.OptimizedImage = exports.NextStepsSectionDefinition = exports.MarkdownText = exports.MATCH_DEBUG_QUERY_PARAM = exports.MATCH_DEBUG_KEY = exports.Loader = exports.ListItemsSectionDefinition = exports.LinkType = exports.LIST_ITEMS_ENDPOINT = exports.KpiSectionDefinition = exports.ImageSearchFilterToken = exports.HtmlCommentSectionDefinition = exports.HeroSectionDefinition = exports.HeroEntitySectionDefinition = exports.HOST_CONSENT_GLOBAL = exports.FeedbackBar = exports.FeatureToggleProvider = exports.FeatureSection9PlusDefinition = exports.FeatureCardsSectionDefinition = exports.FallbackSectionDefinition = exports.ErrorSectionDefinition = exports.EntitySectionDefinition = exports.EntityCollectionSectionDefinition = exports.EXPERIMENT_IDS = exports.ERROR_MARKDOWN = exports.EDITABLE_TOKENS = exports.Disclaimer = exports.DiagnosticsCollector = exports.DROP_SECTION = exports.DIAGNOSTIC_TYPES = exports.DEFAULT_ERROR_TEMPLATES = exports.DEFAULT_BACKEND_ENVIRONMENT = exports.CtaBannerSectionDefinition = exports.ComponentTracking = exports.ComponentRegistry = exports.ComponentDependenciesProvider = exports.ComparisonSectionDefinition = exports.ChipsProvider = exports.CalloutSectionDefinition = exports.CalloutBlock = exports.CONSENT_OVERRIDE_QUERY_PARAM = exports.CONSENT_OVERRIDE_KEY = exports.COLLECTION_BY_HANDLE_QUERY = exports.CLIENT_IDS = exports.CALLOUT_SEMANTICS = exports.CALLOUT_KINDS = exports.BottomContainer = exports.BRAND_TOKENS = exports.BACKEND_ENVIRONMENT_QUERY_PARAM = exports.BACKEND_ENVIRONMENT_KEY = exports.ARTICLE_BY_HANDLE_QUERY = void 0;
|
|
5
|
+
exports.isValidWeb5Url = exports.isValidTemplateId = exports.isValidLinkUrl = exports.isUserEngaged = exports.isTrustedBundleHost = exports.isThemeDebugEnabled = exports.isTemplatePickerRequested = exports.isSimulationTraffic = exports.isShopifyHost = exports.isProductFamilyEntityType = exports.isOneTrustHost = exports.isNavigableUrl = exports.isMatchDebugEnabled = exports.isLegacyUrl = exports.isHtmlComment = exports.isHslTriplet = exports.isEntityLink = exports.installConsentProvider = exports.initConsentGate = exports.hslTripletToHex = exports.hslToRgb = exports.hostAliasFor = exports.hexToHslTriplet = exports.hasImage = exports.hasHostSuppliedConsent = exports.hasAnalyticsConsent = exports.getTemplateOverride = exports.getSessionId = exports.getResizedImageUrl = exports.getRefreshPromptsExpiry = exports.getPartsByType = exports.getPartByRole = exports.getOrCreateSessionId = exports.getLinks = exports.getIntentFromMarkdown = exports.getInstalledProviderName = exports.getImages = exports.getHeading = exports.getGateView = exports.getForwardStack = exports.getErrorTypeFromStatus = exports.getEntityExtractor = exports.getContextualImageFilename = exports.getConsentSnapshot = exports.getConsentOverride = exports.getConsentGateStats = exports.getClientBundleOverride = exports.getChatId = exports.getBackendEnvironment = exports.getAllByRole = exports.generateSectionId = exports.generateId = exports.formatProductPriceLabel = exports.formatPriceField = exports.formatMoney = exports.fixMalformedLinks = exports.findKeywordsInContent = exports.findInvalidWeb5Links = exports.findImageInNode = exports.findImageInChildren = exports.fetchProductsByHandlesMap = exports.fetchProductsByHandles = exports.fetchEntityListData = exports.extractProtocol = exports.extractLinkMetadata = exports.extractIntentFromMarkdown = exports.extractContentMarkdown = exports.extractContent = exports.escapeWeb5Links = exports.entityPayloadFromItems = exports.ensureMinLightness = exports.enrichEntitiesFromPayload = exports.enableRefreshPrompts = exports.disableRefreshPrompts = exports.detectLinkType = exports.detectConsentProvider = exports.deriveRole = exports.deriveLightColor = exports.deriveDarkGradient = exports.deriveDarkColor = exports.defaultExtractor = exports.decodeLinkText = exports.createWixAuthFetch = exports.createShopifyConsentProvider = exports.createSdkRegistry = exports.createPageSection = exports.createOneTrustConsentProvider = exports.createHostSuppliedConsentProvider = exports.createFeatureToggleReader = exports.createErrorMarkdown = exports.convertToBlockElementsWithMapping = exports.convertToBlockElements = exports.computeContentBBox = exports.cn = exports.clearForwardStack = exports.buildProbeUrl = exports.buildPlacementDependencies = exports.buildImageSearchFilter = exports.bucketOf = exports.backgroundFilter = void 0;
|
|
6
|
+
exports.writeProductBackHandoff = exports.validatePatternWithBlocks = exports.validatePatternSyntax = exports.validatePattern = exports.validateLinkUrl = exports.usesStagingBackend = exports.useWeb5Link = exports.useUserQuery = exports.useResolvedImageSources = exports.useResolveShopifyEntityData = exports.useResolveSearchSpringEntityData = exports.useResolveGenericEntityData = exports.usePlacementPayload = exports.useMarkdownUtils = exports.useFeatureToggles = exports.useFeatureToggle = exports.useEntityTransforms = exports.useDebugImageContext = exports.useConversation = exports.useComponentDependencies = exports.useChips = exports.unlockOnUserAction = exports.tryParseComponent = exports.trimTrailingWhitespace = exports.transmit = exports.transformToSolutionEntityData = exports.transformToGenericEntityData = exports.transformToBlogPostEntityData = exports.transformShopifyProduct = exports.transformShopifyEntityToItemData = exports.transformShopifyCollection = exports.transformShopifyArticle = exports.transformSSProductToEntityItemData = exports.toRgb = exports.toMatchedOptions = exports.subscribeToConsent = exports.stripMarkdown = exports.startNewChatId = exports.shouldRefreshPrompts = exports.setMatchDebug = exports.setForwardStack = exports.setConsentOverride = exports.setConsentBufferLimit = exports.setChatId = exports.setBackendEnvironment = exports.rgbToHsl = exports.resolveShopifyEntity = exports.resolveShopifyConfig = exports.resolveErrorTemplate = exports.resolveClientBundleUrl = exports.resetMatchDebugCache = exports.resetConsentGateForTests = exports.resetChatIdForTests = exports.registerEntityExtractor = exports.readProductBackHandoff = exports.readCurrencyCode = exports.pushToForwardStack = exports.pushPromptSubmit = exports.pushLinkClick = exports.pushExit = exports.pushEvent = exports.pushError = exports.pushEntityFiltered = exports.publishHostConsent = exports.preprocessMarkdown = exports.popFromForwardStack = exports.parseWeb5Url = exports.parseMarkdownToComponents = exports.parseMarkdownToAst = exports.parseEntityLink = exports.parseAstToMarkdown = exports.normalizeImageUrl = exports.normalizeIconUrls = exports.normalizeEntityItem = exports.nodesToParts = exports.mergeSectionsWithStableReferences = exports.mergeEntityData = exports.mergeClientConfig = exports.mayTransmit = exports.mayPersistIdentity = exports.matchMarkdown = exports.matchAllSections = exports.logMatchDebug = exports.loadImagePixels = exports.loadClientBundle = exports.loadBackdropAnalysis = exports.listEntityItems = exports.isWeb5Url = exports.isWeb5SearchUrl = exports.isWeb5ImageUrl = exports.isWeb5IconUrl = exports.isWeb5EntityUrl = exports.isWeb5AskUrl = exports.isWeb5ActionUrl = void 0;
|
|
7
7
|
var _clients = require("./clients");
|
|
8
8
|
exports.CLIENT_IDS = _clients.CLIENT_IDS;
|
|
9
9
|
exports.EXPERIMENT_IDS = _clients.EXPERIMENT_IDS;
|
|
@@ -185,6 +185,35 @@ exports.pushError = _analyticsEvents.pushError;
|
|
|
185
185
|
exports.pushExit = _analyticsEvents.pushExit;
|
|
186
186
|
exports.pushEntityFiltered = _analyticsEvents.pushEntityFiltered;
|
|
187
187
|
exports.hasAnalyticsConsent = _analyticsEvents.hasAnalyticsConsent;
|
|
188
|
+
var _privacy = require("./privacy");
|
|
189
|
+
exports.UNKNOWN_CONSENT = _privacy.UNKNOWN_CONSENT;
|
|
190
|
+
exports.HOST_CONSENT_GLOBAL = _privacy.HOST_CONSENT_GLOBAL;
|
|
191
|
+
exports.transmit = _privacy.transmit;
|
|
192
|
+
exports.mayTransmit = _privacy.mayTransmit;
|
|
193
|
+
exports.unlockOnUserAction = _privacy.unlockOnUserAction;
|
|
194
|
+
exports.isUserEngaged = _privacy.isUserEngaged;
|
|
195
|
+
exports.mayPersistIdentity = _privacy.mayPersistIdentity;
|
|
196
|
+
exports.getConsentSnapshot = _privacy.getConsentSnapshot;
|
|
197
|
+
exports.getGateView = _privacy.getGateView;
|
|
198
|
+
exports.subscribeToConsent = _privacy.subscribeToConsent;
|
|
199
|
+
exports.installConsentProvider = _privacy.installConsentProvider;
|
|
200
|
+
exports.getInstalledProviderName = _privacy.getInstalledProviderName;
|
|
201
|
+
exports.setConsentBufferLimit = _privacy.setConsentBufferLimit;
|
|
202
|
+
exports.getConsentGateStats = _privacy.getConsentGateStats;
|
|
203
|
+
exports.resetConsentGateForTests = _privacy.resetConsentGateForTests;
|
|
204
|
+
exports.detectConsentProvider = _privacy.detectConsentProvider;
|
|
205
|
+
exports.initConsentGate = _privacy.initConsentGate;
|
|
206
|
+
exports.CONSENT_OVERRIDE_KEY = _privacy.CONSENT_OVERRIDE_KEY;
|
|
207
|
+
exports.CONSENT_OVERRIDE_QUERY_PARAM = _privacy.CONSENT_OVERRIDE_QUERY_PARAM;
|
|
208
|
+
exports.getConsentOverride = _privacy.getConsentOverride;
|
|
209
|
+
exports.setConsentOverride = _privacy.setConsentOverride;
|
|
210
|
+
exports.createShopifyConsentProvider = _privacy.createShopifyConsentProvider;
|
|
211
|
+
exports.isShopifyHost = _privacy.isShopifyHost;
|
|
212
|
+
exports.createOneTrustConsentProvider = _privacy.createOneTrustConsentProvider;
|
|
213
|
+
exports.isOneTrustHost = _privacy.isOneTrustHost;
|
|
214
|
+
exports.createHostSuppliedConsentProvider = _privacy.createHostSuppliedConsentProvider;
|
|
215
|
+
exports.hasHostSuppliedConsent = _privacy.hasHostSuppliedConsent;
|
|
216
|
+
exports.publishHostConsent = _privacy.publishHostConsent;
|
|
188
217
|
var _errors = require("./errors");
|
|
189
218
|
exports.ERROR_MARKDOWN = _errors.ERROR_MARKDOWN;
|
|
190
219
|
exports.getErrorTypeFromStatus = _errors.getErrorTypeFromStatus;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clients","require","exports","CLIENT_IDS","EXPERIMENT_IDS","_FeatureToggleContext","createFeatureToggleReader","FeatureToggleProvider","useFeatureToggles","useFeatureToggle","_parts","getPartsByType","getPartByRole","getAllByRole","getHeading","getImages","getLinks","extractContent","extractContentMarkdown","deriveRole","_sectionDefinition","DROP_SECTION","_diagnosticTypes","DIAGNOSTIC_TYPES","_imageSearchFilterTypes","buildImageSearchFilter","_imageSearchFilters","ImageSearchFilterToken","backgroundFilter","_componentDefinitions","HeroSectionDefinition","HeroEntitySectionDefinition","KpiSectionDefinition","FeatureCardsSectionDefinition","EntitySectionDefinition","EntityCollectionSectionDefinition","ComparisonSectionDefinition","TextBlockSectionDefinition","CtaBannerSectionDefinition","CalloutSectionDefinition","NextStepsSectionDefinition","FeatureSection9PlusDefinition","ListItemsSectionDefinition","SkipNodesSectionDefinition","HtmlCommentSectionDefinition","SearchSectionDefinition","ErrorSectionDefinition","FallbackSectionDefinition","createSdkRegistry","_registry","ComponentRegistry","_patternValidator","validatePattern","validatePatternSyntax","validatePatternWithBlocks","_markdownBlocks","convertToBlockElements","convertToBlockElementsWithMapping","_linkTypes","Web5UrlType","isWeb5AskUrl","isWeb5EntityUrl","isWeb5ImageUrl","isWeb5IconUrl","isWeb5ActionUrl","isWeb5SearchUrl","isWeb5Url","isNavigableUrl","isValidLinkUrl","isLegacyUrl","_entityLinkParser","parseWeb5Url","isValidWeb5Url","validateLinkUrl","isEntityLink","parseEntityLink","extractProtocol","extractLinkMetadata","_web5LinkValidator","findInvalidWeb5Links","_nodeMatchers","hasImage","isHtmlComment","_match","matchMarkdown","matchAllSections","nodesToParts","_ComponentDependenciesContext","ComponentDependenciesProvider","useComponentDependencies","_UserQueryContext","UserQueryProvider","useUserQuery","_ChipsContext","ChipsProvider","useChips","_entity","defaultExtractor","enrichEntitiesFromPayload","normalizeEntityItem","entityPayloadFromItems","mergeEntityData","fetchEntityListData","listEntityItems","LIST_ITEMS_ENDPOINT","getEntityExtractor","registerEntityExtractor","transformToSolutionEntityData","transformToBlogPostEntityData","transformToGenericEntityData","toMatchedOptions","formatMoney","readCurrencyCode","formatPriceField","formatProductPriceLabel","isProductFamilyEntityType","_callout","CALLOUT_KINDS","CALLOUT_SEMANTICS","_useWeb5Link","useWeb5Link","_useConversation","useConversation","_useDebugImageContext","useDebugImageContext","_useResolvedImageSources","useResolvedImageSources","_useResolveGenericEntityData","useResolveGenericEntityData","_useEntityTransforms","useEntityTransforms","_useMarkdownUtils","useMarkdownUtils","_useResolveShopifyEntityData","useResolveShopifyEntityData","_useResolveSearchSpringEntityData","useResolveSearchSpringEntityData","_searchspring","fetchProductsByHandles","fetchProductsByHandlesMap","transformSSProductToEntityItemData","_cart","addToCart","_shopify","ShopifyStorefrontClient","resolveShopifyConfig","resolveShopifyEntity","transformShopifyProduct","transformShopifyCollection","transformShopifyArticle","transformShopifyEntityToItemData","PRODUCT_BY_HANDLE_QUERY","COLLECTION_BY_HANDLE_QUERY","ARTICLE_BY_HANDLE_QUERY","_utils","cn","_imageUtils","normalizeImageUrl","getResizedImageUrl","_imageBackdrop","analyzeBackdrop","computeContentBBox","buildProbeUrl","loadImagePixels","loadBackdropAnalysis","_parseUtils","stripMarkdown","_colorUtils","rgbToHsl","hslToRgb","ensureMinLightness","toRgb","deriveDarkColor","deriveDarkGradient","deriveLightColor","_analyticsEvents","pushEvent","pushPromptSubmit","pushLinkClick","pushError","pushExit","pushEntityFiltered","hasAnalyticsConsent","_errors","ERROR_MARKDOWN","getErrorTypeFromStatus","createErrorMarkdown","STREAMING_TIMEOUT_MS","DEFAULT_ERROR_TEMPLATES","resolveErrorTemplate","_navigationStack","getForwardStack","setForwardStack","clearForwardStack","pushToForwardStack","popFromForwardStack","_UserQuery","UserQuery","_productBackHandoff","PRODUCT_BACK_SESSION_KEY","writeProductBackHandoff","readProductBackHandoff","_PromptEntryEmptyState","PromptEntryEmptyState","_SearchSection","SearchSection","_FeedbackBar","FeedbackBar","_Disclaimer","Disclaimer","_BottomContainer","BottomContainer","_MarkdownText","MarkdownText","_CalloutBlock","CalloutBlock","_OptimizedImage","OptimizedImage","_SectionSkeleton","SectionSkeleton","_SmartIcon","SmartIcon","_Loader","Loader","_PlacementLoader","PlacementLoader","_UnifiedLink","UnifiedLink","detectLinkType","LinkType","_table","Table","TableHeader","TableBody","TableFooter","TableHead","TableRow","TableCell","TableCaption","_userQueryEvent","WEB5_USER_QUERY_EVENT","_answerUpdatedEvent","WEB5_ANSWER_UPDATED_EVENT","_redirectEvent","WEB5_REDIRECT_EVENT","_loadClientBundle","loadClientBundle","_clientBundleOverride","getClientBundleOverride","isTrustedBundleHost","_clientBundleUrl","TEMPLATES_CDN_BASE","TEMPLATES_MANIFEST_URL","getTemplateOverride","isTemplatePickerRequested","isValidTemplateId","resolveClientBundleUrl","_mergeClientConfig","mergeClientConfig","_applyThemeOverrides","applyThemeOverrides","THEME_OVERRIDE_TOKENS","_tokenContract","THEME_TOKEN_CONTRACT","BRAND_TOKENS","EDITABLE_TOKENS","TOKEN_NAME_PATTERN","bucketOf","hostAliasFor","_themeDebug","isThemeDebugEnabled","THEME_DEBUG_KEY","THEME_DEBUG_QUERY_PARAM","_colorFormat","hexToHslTriplet","hslTripletToHex","isHslTriplet","_PlacementResponseRenderer","PlacementResponseRenderer","PlacementSmoothHeight","_buildPlacementDependencies","buildPlacementDependencies","_PlacementPayloadContext","PlacementPayloadProvider","usePlacementPayload","_unifiedMarkdownParser","UnifiedMarkdownParser","parseMarkdownToAst","parseAstToMarkdown","_markdownPreprocessor","escapeWeb5Links","fixMalformedLinks","trimTrailingWhitespace","normalizeIconUrls","decodeLinkText","preprocessMarkdown","_componentTracking","ComponentTracking","_contentKeywordMatcher","findKeywordsInContent","getContextualImageFilename","_intentExtractor","extractIntentFromMarkdown","getIntentFromMarkdown","_propsExtractor","createPageSection","generateSectionId","generateId","findImageInNode","findImageInChildren","_diagnosticsCollector","DiagnosticsCollector","_refreshPrompts","REFRESH_PROMPTS_UNTIL_KEY","REFRESH_PROMPTS_WINDOW_MS","getRefreshPromptsExpiry","shouldRefreshPrompts","enableRefreshPrompts","disableRefreshPrompts","_backendEnvironment","BACKEND_ENVIRONMENT_KEY","BACKEND_ENVIRONMENT_QUERY_PARAM","DEFAULT_BACKEND_ENVIRONMENT","getBackendEnvironment","setBackendEnvironment","usesStagingBackend","_simulation","isSimulationTraffic","_matchDebug","MATCH_DEBUG_KEY","MATCH_DEBUG_QUERY_PARAM","isMatchDebugEnabled","setMatchDebug","resetMatchDebugCache","logMatchDebug","_wixAuthFetch","createWixAuthFetch","_sessionManager","getOrCreateSessionId","getSessionId","getChatId","startNewChatId","setChatId","resetChatIdForTests","_componentParser","parseMarkdownToComponents","tryParseComponent","mergeSectionsWithStableReferences","_hostScope","WEB5_ROOT_ID","WEB5_ROOT_CLASS","WEB5_SCOPES","WEB5_SCOPE","WEB5_GLOBAL_TOKENS"],"sources":["../../src/index.ts"],"sourcesContent":["// Client IDs and experiment IDs\nexport { CLIENT_IDS, EXPERIMENT_IDS } from './clients';\n\nexport {\n type EmbedFeatureToggleResult,\n type FeatureToggleReader,\n createFeatureToggleReader,\n FeatureToggleProvider,\n useFeatureToggles,\n useFeatureToggle,\n} from './featureToggles/FeatureToggleContext';\n\n// Dev-only chrome injection contract for client packages\nexport type { DevEnvironment } from './client/devEnvironment';\n\n// Part types and helpers\nexport {\n type PartType,\n type Part,\n type HeadingPart,\n type ImagePart,\n type LinkPart,\n type ListPart,\n type ListItemPart,\n type KpiItemPart,\n type CardPart,\n type IconPart,\n type CalloutPart,\n type EntityPart,\n getPartsByType,\n getPartByRole,\n getAllByRole,\n getHeading,\n getImages,\n getLinks,\n extractContent,\n extractContentMarkdown,\n deriveRole,\n} from './parts/parts';\n\n// Component types\nexport type {\n BaseCompProps,\n SlotCompProps,\n SectionCompProps,\n SectionCompPropsWithSlot,\n TextCompProps,\n ButtonCompProps,\n ImageCompProps,\n BadgeCompProps,\n HeroButton,\n KpiItemCompProps,\n FeatureItemCompProps,\n FeatureCardCompProps,\n EntityItemData,\n EntityItem,\n GenericEntityData,\n GenericEntityCompProps,\n ComparisonRow,\n ComparisonColumn,\n AiNarrativeCompProps,\n HeroCompProps,\n HeroEntityCompProps,\n KpiCompProps,\n FeatureCardsCompProps,\n EntityCompProps,\n ComparisonCompProps,\n TextBlockCompProps,\n Component,\n BaseComponent,\n SlotComponent,\n SectionComponent,\n TextComponent,\n ButtonComponent,\n ImageComponent,\n BadgeComponent,\n KpiItemComponent,\n FeatureItemComponent,\n FeatureCardComponent,\n GenericEntityComponent,\n AiNarrativeComponent,\n ComparisonSectionComponent,\n TextBlockSectionComponent,\n HeroSectionComponent,\n HeroEntitySectionComponent,\n KpiSectionComponent,\n FeatureCardsSectionComponent,\n EntitySectionComponent,\n PropsOf,\n SectionFixture,\n CtaBannerCompProps,\n CtaBannerSectionComponent,\n CalloutCompProps,\n CalloutSectionComponent,\n NextStepsCompProps,\n NextStepsSectionComponent,\n FeatureSection9PlusCompProps,\n FeatureSection9PlusSectionComponent,\n ListItemsSectionCompProps,\n ListItemsSectionComponent,\n ErrorCompProps,\n ErrorSectionComponent,\n NullCompProps,\n NullSectionComponent,\n SolutionEntityCompProps,\n SolutionEntitySectionComponent,\n SolutionEntityData,\n BlogEntityCompProps,\n BlogEntitySectionComponent,\n BlogEntityData,\n GeneralTextCompProps,\n GeneralTextSectionComponent,\n PersonalizedNarrativeCompProps,\n PersonalizedNarrativeSectionComponent,\n} from './component/types';\n\n// Section definition\nexport type {\n SectionDefinition,\n ParseContext,\n ContextualImageResult,\n DropSection,\n} from './component/section-definition';\nexport { DROP_SECTION } from './component/section-definition';\n\n// Diagnostic types\nexport { DIAGNOSTIC_TYPES } from './component/diagnosticTypes';\nexport type { DiagnosticType } from './component/diagnosticTypes';\n\n// Image search filters\nexport {\n buildImageSearchFilter,\n type ImageSearchFilterString,\n} from './image/imageSearchFilterTypes';\nexport {\n ImageSearchFilterToken,\n backgroundFilter,\n} from './image/imageSearchFilters';\nexport type {\n ContextualImageAsset,\n ImageSourceInput,\n ResolvedImageSource,\n ResolvedImageSourceKind,\n} from './image/contextualImageTypes';\n\n// Section definition classes + createSdkRegistry\nexport {\n HeroSectionDefinition,\n HeroEntitySectionDefinition,\n KpiSectionDefinition,\n FeatureCardsSectionDefinition,\n EntitySectionDefinition,\n EntityCollectionSectionDefinition,\n ComparisonSectionDefinition,\n TextBlockSectionDefinition,\n CtaBannerSectionDefinition,\n CalloutSectionDefinition,\n NextStepsSectionDefinition,\n FeatureSection9PlusDefinition,\n ListItemsSectionDefinition,\n SkipNodesSectionDefinition,\n HtmlCommentSectionDefinition,\n SearchSectionDefinition,\n ErrorSectionDefinition,\n FallbackSectionDefinition,\n createSdkRegistry,\n} from './component/componentDefinitions';\n\n// Registry\nexport { ComponentRegistry } from './registry';\nexport type {\n SlotOptions,\n SectionOptions,\n SectionRegistration,\n SlotNode,\n SlotIntentNode,\n SectionIntentNode,\n SectionNode,\n SlotVariant,\n SectionVariant,\n RegistryCatalog,\n ActionResult,\n ActionHandler,\n} from './registry';\n\n// Pattern validator\nexport {\n validatePattern,\n validatePatternSyntax,\n validatePatternWithBlocks,\n type PatternValidationResult,\n type BlockElement,\n type EnrichedBlockElement,\n type LinkMetadata,\n type LinkAttribute,\n} from './patternValidator';\n\n// Markdown blocks\nexport {\n convertToBlockElements,\n convertToBlockElementsWithMapping,\n type BlockElementsWithMapping,\n} from './markdownBlocks';\n\n// Link types, enum & guards\nexport {\n Web5UrlType,\n type Web5AskUrl,\n type Web5EntityUrl,\n type Web5ImageUrl,\n type Web5IconUrl,\n type Web5ActionUrl,\n type Web5SearchUrl,\n type Web5Url,\n type HttpsUrl,\n type HttpUrl,\n type MailtoUrl,\n type RelativeUrl,\n type NavigableUrl,\n type ValidLinkUrl,\n type AnyKnownUrl,\n type LegacyUrl,\n isWeb5AskUrl,\n isWeb5EntityUrl,\n isWeb5ImageUrl,\n isWeb5IconUrl,\n isWeb5ActionUrl,\n isWeb5SearchUrl,\n isWeb5Url,\n isNavigableUrl,\n isValidLinkUrl,\n isLegacyUrl,\n} from './types/link-types';\n\n// Entity/URL parsing\nexport {\n parseWeb5Url,\n isValidWeb5Url,\n validateLinkUrl,\n type Web5UrlParsed,\n type Web5AskParsed,\n type Web5EntityParsed,\n type Web5ImageParsed,\n type Web5IconParsed,\n type Web5ActionParsed,\n type Web5SearchParsed,\n isEntityLink,\n parseEntityLink,\n extractProtocol,\n extractLinkMetadata,\n} from './utils/entityLinkParser';\n\n// Web5 link validation\nexport {\n findInvalidWeb5Links,\n type InvalidWeb5Link,\n} from './utils/web5LinkValidator';\n\n// Node matchers\nexport { hasImage, isHtmlComment } from './utils/nodeMatchers';\n\n// Match API\nexport {\n matchMarkdown,\n type MarkdownMatchResult,\n matchAllSections,\n type MatchAllSectionsResult,\n nodesToParts,\n} from './match';\n\n// ---------------------------------------------------------------------------\n// DI Infrastructure (moved from @wix/w5-client-circana)\n// ---------------------------------------------------------------------------\n\n// DI context and provider\nexport {\n ComponentDependenciesProvider,\n useComponentDependencies,\n type ComponentDependenciesProviderProps,\n} from './context/ComponentDependenciesContext';\n\n// Raw user query for the current response page\nexport {\n UserQueryProvider,\n useUserQuery,\n type UserQueryProviderProps,\n} from './context/UserQueryContext';\n\n// Chips context (suggestion chips shared between SearchSection and error states)\nexport {\n ChipsProvider,\n useChips,\n type SuggestionChip,\n} from './context/ChipsContext';\n\n// DI types\nexport type {\n ComponentDependencies,\n Web5LinkApi,\n ConversationApi,\n SendMessageTrackingOptions,\n SendMessageOptions,\n ComparisonSubmitPayload,\n ComparisonSelectedProduct,\n ProductComparisonSelectionState,\n ProductComparisonApi,\n EntityTransforms,\n MarkdownUtils,\n ResolveGenericEntityDataOptions,\n} from './types/dependencies';\nexport type {\n ApiPayloadItem,\n EntityTypeConfig,\n EntityConfig,\n EntityExtractionContext,\n} from './types/entity';\nexport {\n defaultExtractor,\n enrichEntitiesFromPayload,\n normalizeEntityItem,\n entityPayloadFromItems,\n mergeEntityData,\n fetchEntityListData,\n listEntityItems,\n LIST_ITEMS_ENDPOINT,\n getEntityExtractor,\n registerEntityExtractor,\n transformToSolutionEntityData,\n transformToBlogPostEntityData,\n transformToGenericEntityData,\n toMatchedOptions,\n formatMoney,\n readCurrencyCode,\n formatPriceField,\n formatProductPriceLabel,\n isProductFamilyEntityType,\n} from './entity';\nexport type {\n EntityExtractor,\n FetchEntityListDataOptions,\n ListEntityItemsOptions,\n MatchedOption,\n ProductPriceFields,\n} from './entity';\nexport {\n CALLOUT_KINDS,\n CALLOUT_SEMANTICS,\n type CalloutKind,\n type CalloutSemantic,\n type Callout,\n} from './types/callout';\n\n// Wrapper hooks\nexport { useWeb5Link } from './hooks/useWeb5Link';\nexport { useConversation } from './hooks/useConversation';\nexport { useDebugImageContext } from './hooks/useDebugImageContext';\nexport { useResolvedImageSources } from './hooks/useResolvedImageSources';\nexport { useResolveGenericEntityData } from './hooks/useResolveGenericEntityData';\nexport { useEntityTransforms } from './hooks/useEntityTransforms';\nexport { useMarkdownUtils } from './hooks/useMarkdownUtils';\nexport { useResolveShopifyEntityData } from './hooks/useResolveShopifyEntityData';\nexport { useResolveSearchSpringEntityData } from './hooks/useResolveSearchSpringEntityData';\n\n// SearchSpring\nexport {\n fetchProductsByHandles,\n fetchProductsByHandlesMap,\n transformSSProductToEntityItemData,\n} from './services/searchspring';\nexport type {\n SearchSpringConfig,\n SSProduct,\n SSSearchResponse,\n SSSizeData,\n} from './services/searchspring';\n\n// Shopify Storefront API\n// Cart actions\nexport { addToCart } from './services/cart';\n\nexport {\n ShopifyStorefrontClient,\n resolveShopifyConfig,\n resolveShopifyEntity,\n transformShopifyProduct,\n transformShopifyCollection,\n transformShopifyArticle,\n transformShopifyEntityToItemData,\n PRODUCT_BY_HANDLE_QUERY,\n COLLECTION_BY_HANDLE_QUERY,\n ARTICLE_BY_HANDLE_QUERY,\n} from './services/shopify';\nexport type {\n ShopifyStorefrontConfig,\n ShopifyProduct,\n ShopifyCollection,\n ShopifyArticle,\n ShopifyImage,\n ShopifyMoneyV2,\n} from './services/shopify';\n\n// Utilities\nexport { cn } from './lib/utils';\nexport { normalizeImageUrl, getResizedImageUrl } from './utils/image-utils';\nexport {\n analyzeBackdrop,\n computeContentBBox,\n buildProbeUrl,\n loadImagePixels,\n loadBackdropAnalysis,\n type BackdropAnalysis,\n type ContentBBox,\n type ImagePixels,\n} from './utils/imageBackdrop';\nexport { stripMarkdown } from './component/componentDefinitions/parse-utils';\n\n// Color utilities\nexport {\n type RGB,\n rgbToHsl,\n hslToRgb,\n ensureMinLightness,\n toRgb,\n deriveDarkColor,\n deriveDarkGradient,\n deriveLightColor,\n} from './color/colorUtils';\n\n// Analytics\nexport {\n pushEvent,\n pushPromptSubmit,\n pushLinkClick,\n pushError,\n pushExit,\n pushEntityFiltered,\n hasAnalyticsConsent,\n type EntityFilteredReason,\n} from './utils/analyticsEvents';\n\n// Error handling types and utilities\nexport {\n type ConversationErrorType,\n ERROR_MARKDOWN,\n getErrorTypeFromStatus,\n createErrorMarkdown,\n STREAMING_TIMEOUT_MS,\n type ErrorActionType,\n type ErrorIconType,\n type ErrorTemplateButton,\n type ErrorTemplate,\n type ErrorTemplateOverrides,\n DEFAULT_ERROR_TEMPLATES,\n resolveErrorTemplate,\n} from './errors';\n\n// Navigation utilities\nexport {\n getForwardStack,\n setForwardStack,\n clearForwardStack,\n pushToForwardStack,\n popFromForwardStack,\n} from './utils/navigationStack';\n\n// UI components\nexport {\n UserQuery,\n type UserQueryProps,\n type ProductBackContext,\n} from './components/ui/UserQuery';\nexport {\n PRODUCT_BACK_SESSION_KEY,\n writeProductBackHandoff,\n readProductBackHandoff,\n type ProductBackHandoff,\n} from './utils/productBackHandoff';\nexport {\n PromptEntryEmptyState,\n type PromptEntryEmptyStateProps,\n} from './components/ui/PromptEntryEmptyState';\nexport {\n SearchSection,\n type SearchSectionProps,\n type SearchSectionHandle,\n type ScrollChip,\n} from './components/ui/SearchSection';\nexport {\n FeedbackBar,\n type FeedbackBarProps,\n type FeedbackCategoryOption,\n type FeedbackSentiment,\n type FeedbackSubmitInput,\n} from './components/ui/FeedbackBar';\nexport { Disclaimer, type DisclaimerProps } from './components/ui/Disclaimer';\nexport {\n BottomContainer,\n type BottomContainerProps,\n} from './components/ui/BottomContainer';\nexport { MarkdownText } from './components/ui/MarkdownText';\nexport {\n CalloutBlock,\n type CalloutBlockProps,\n} from './components/ui/CalloutBlock';\nexport {\n OptimizedImage,\n type OptimizedImageProps,\n} from './components/ui/OptimizedImage';\nexport {\n SectionSkeleton,\n type SectionSkeletonProps,\n} from './components/ui/SectionSkeleton';\nexport { SmartIcon, type SmartIconProps } from './components/ui/SmartIcon';\nexport { Loader, type LoaderProps } from './components/ui/Loader';\nexport {\n PlacementLoader,\n type PlacementLoaderProps,\n} from './components/ui/PlacementLoader';\nexport {\n UnifiedLink,\n detectLinkType,\n type UnifiedLinkProps,\n LinkType,\n type LinkVariant,\n} from './components/ui/UnifiedLink';\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n} from './components/ui/table';\n\n// Placement (DL #088, DL #102 behavior declarations)\nexport type {\n PlacementBehaviorConfig,\n PlacementConfig,\n PlacementPrompts,\n} from './types/placement';\n\n// Cross-bundle user-query broadcast event (DL #097 D2)\nexport {\n WEB5_USER_QUERY_EVENT,\n type Web5UserQueryEventDetail,\n type Web5UserQueryEvent,\n} from './types/userQueryEvent';\n\n// Cross-bundle answer-updated broadcast event (B2B-4121)\nexport {\n WEB5_ANSWER_UPDATED_EVENT,\n type Web5AnswerUpdatedEventDetail,\n type Web5AnswerUpdatedEvent,\n} from './types/answerUpdatedEvent';\n\n// Cross-bundle redirect broadcast event (DL #098 D3)\nexport {\n WEB5_REDIRECT_EVENT,\n type Web5RedirectEventDetail,\n type Web5RedirectEvent,\n type Web5RedirectReason,\n} from './types/redirectEvent';\n// `placementFilter` was removed — hero/next-steps exclusion is the prompt's job\n// and placement-specific designs belong as `{ placement: true }` registry\n// variants (resolved automatically via `resolveSection(type, { placement: true })`).\n\n// Client bundle loader (DL #088 D3.3)\nexport { loadClientBundle } from './client/loadClientBundle';\n\n// `?clientBundleUrl=` dev override — shared by `web50-server-ui` and\n// `embed-placement` so the trusted-host gate can't drift between them.\nexport {\n getClientBundleOverride,\n isTrustedBundleHost,\n} from './client/clientBundleOverride';\n\n// Client-UMD URL resolution (DL #094 per-msid, DL #129 per-template) and the\n// universal bundle←backend config merge (DL #129 Q3/Q7) — shared by\n// `web50-server-ui` and `embed-placement`, the two client-bundle load sites.\nexport {\n TEMPLATES_CDN_BASE,\n TEMPLATES_MANIFEST_URL,\n getTemplateOverride,\n isTemplatePickerRequested,\n isValidTemplateId,\n resolveClientBundleUrl,\n} from './client/clientBundleUrl';\nexport {\n mergeClientConfig,\n type DeepPartial,\n} from './client/mergeClientConfig';\nexport {\n applyThemeOverrides,\n THEME_OVERRIDE_TOKENS,\n type ThemeOverrideKey,\n type ThemeOverrides,\n} from './client/applyThemeOverrides';\nexport {\n THEME_TOKEN_CONTRACT,\n BRAND_TOKENS,\n EDITABLE_TOKENS,\n TOKEN_NAME_PATTERN,\n bucketOf,\n hostAliasFor,\n type TokenBucket,\n type TokenContractEntry,\n type TokenType,\n} from './theme/tokenContract';\nexport {\n isThemeDebugEnabled,\n THEME_DEBUG_KEY,\n THEME_DEBUG_QUERY_PARAM,\n type AppliedToken,\n type ThemeOverrideSource,\n} from './client/themeDebug';\nexport {\n hexToHslTriplet,\n hslTripletToHex,\n isHslTriplet,\n} from './theme/colorFormat';\n\n// Placement renderer + DI helper (DL #088 D3.2, D3.4)\nexport {\n PlacementResponseRenderer,\n PlacementSmoothHeight,\n type PlacementResponseRendererProps,\n type PlacementSection,\n type PlacementVariant,\n} from './components/placement/PlacementResponseRenderer';\nexport {\n buildPlacementDependencies,\n type BuildPlacementDependenciesOptions,\n} from './components/placement/buildPlacementDependencies';\nexport {\n PlacementPayloadProvider,\n usePlacementPayload,\n type PlacementPayloadContextValue,\n} from './components/placement/PlacementPayloadContext';\n\n// Markdown parsing utilities — lifted from web50-server-ui (DL #088 B9.1)\nexport {\n UnifiedMarkdownParser,\n parseMarkdownToAst,\n parseAstToMarkdown,\n} from './utils/unifiedMarkdownParser';\nexport {\n escapeWeb5Links,\n fixMalformedLinks,\n trimTrailingWhitespace,\n normalizeIconUrls,\n decodeLinkText,\n preprocessMarkdown,\n type PreprocessorDiagnostic,\n type PreprocessResult,\n} from './utils/markdownPreprocessor';\nexport {\n ComponentTracking,\n type ComponentNodeRange,\n} from './utils/componentTracking';\nexport {\n findKeywordsInContent,\n getContextualImageFilename,\n} from './utils/contentKeywordMatcher';\nexport {\n extractIntentFromMarkdown,\n getIntentFromMarkdown,\n type IntentInfo,\n type IntentExtractionOptions,\n type ResponseState,\n} from './utils/intentExtractor';\nexport type { PageSection } from './types/page-section';\nexport {\n createPageSection,\n generateSectionId,\n generateId,\n findImageInNode,\n findImageInChildren,\n type Product,\n type ComparisonProduct,\n type ProductComparisonSectionProps,\n} from './utils/propsExtractor';\nexport {\n DiagnosticsCollector,\n type DiagnosticEntry,\n} from './utils/diagnosticsCollector';\nexport {\n REFRESH_PROMPTS_UNTIL_KEY,\n REFRESH_PROMPTS_WINDOW_MS,\n getRefreshPromptsExpiry,\n shouldRefreshPrompts,\n enableRefreshPrompts,\n disableRefreshPrompts,\n} from './utils/refreshPrompts';\nexport {\n type BackendEnvironment,\n BACKEND_ENVIRONMENT_KEY,\n BACKEND_ENVIRONMENT_QUERY_PARAM,\n DEFAULT_BACKEND_ENVIRONMENT,\n getBackendEnvironment,\n setBackendEnvironment,\n usesStagingBackend,\n} from './utils/backendEnvironment';\nexport { isSimulationTraffic } from './utils/simulation';\nexport {\n MATCH_DEBUG_KEY,\n MATCH_DEBUG_QUERY_PARAM,\n isMatchDebugEnabled,\n setMatchDebug,\n resetMatchDebugCache,\n logMatchDebug,\n} from './utils/matchDebug';\nexport { createWixAuthFetch } from './client/wixAuthFetch';\nexport {\n getOrCreateSessionId,\n getSessionId,\n getChatId,\n startNewChatId,\n setChatId,\n resetChatIdForTests,\n} from './utils/sessionManager';\n\n// Component parser orchestrator — lifted from web50-server-ui (DL #088 B9.5)\nexport {\n parseMarkdownToComponents,\n tryParseComponent,\n mergeSectionsWithStableReferences,\n type ParseMarkdownOptions,\n type ParseMarkdownResult,\n type ComponentMatch,\n type ParserContext,\n} from './component/componentParser';\nexport type {\n ParserClientConfig,\n EnrichEntityProps,\n} from './component/parser-types';\n\n// Host-mount scope contract — shared by web50-server-ui (which stamps the\n// class and mounts), embed-placement (which mounts the same bundle elsewhere),\n// and the client CDN build (which compiles every selector against it).\nexport {\n WEB5_ROOT_ID,\n WEB5_ROOT_CLASS,\n WEB5_SCOPES,\n WEB5_SCOPE,\n WEB5_GLOBAL_TOKENS,\n type HostFitConfig,\n} from './hostScope';\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clients","require","exports","CLIENT_IDS","EXPERIMENT_IDS","_FeatureToggleContext","createFeatureToggleReader","FeatureToggleProvider","useFeatureToggles","useFeatureToggle","_parts","getPartsByType","getPartByRole","getAllByRole","getHeading","getImages","getLinks","extractContent","extractContentMarkdown","deriveRole","_sectionDefinition","DROP_SECTION","_diagnosticTypes","DIAGNOSTIC_TYPES","_imageSearchFilterTypes","buildImageSearchFilter","_imageSearchFilters","ImageSearchFilterToken","backgroundFilter","_componentDefinitions","HeroSectionDefinition","HeroEntitySectionDefinition","KpiSectionDefinition","FeatureCardsSectionDefinition","EntitySectionDefinition","EntityCollectionSectionDefinition","ComparisonSectionDefinition","TextBlockSectionDefinition","CtaBannerSectionDefinition","CalloutSectionDefinition","NextStepsSectionDefinition","FeatureSection9PlusDefinition","ListItemsSectionDefinition","SkipNodesSectionDefinition","HtmlCommentSectionDefinition","SearchSectionDefinition","ErrorSectionDefinition","FallbackSectionDefinition","createSdkRegistry","_registry","ComponentRegistry","_patternValidator","validatePattern","validatePatternSyntax","validatePatternWithBlocks","_markdownBlocks","convertToBlockElements","convertToBlockElementsWithMapping","_linkTypes","Web5UrlType","isWeb5AskUrl","isWeb5EntityUrl","isWeb5ImageUrl","isWeb5IconUrl","isWeb5ActionUrl","isWeb5SearchUrl","isWeb5Url","isNavigableUrl","isValidLinkUrl","isLegacyUrl","_entityLinkParser","parseWeb5Url","isValidWeb5Url","validateLinkUrl","isEntityLink","parseEntityLink","extractProtocol","extractLinkMetadata","_web5LinkValidator","findInvalidWeb5Links","_nodeMatchers","hasImage","isHtmlComment","_match","matchMarkdown","matchAllSections","nodesToParts","_ComponentDependenciesContext","ComponentDependenciesProvider","useComponentDependencies","_UserQueryContext","UserQueryProvider","useUserQuery","_ChipsContext","ChipsProvider","useChips","_entity","defaultExtractor","enrichEntitiesFromPayload","normalizeEntityItem","entityPayloadFromItems","mergeEntityData","fetchEntityListData","listEntityItems","LIST_ITEMS_ENDPOINT","getEntityExtractor","registerEntityExtractor","transformToSolutionEntityData","transformToBlogPostEntityData","transformToGenericEntityData","toMatchedOptions","formatMoney","readCurrencyCode","formatPriceField","formatProductPriceLabel","isProductFamilyEntityType","_callout","CALLOUT_KINDS","CALLOUT_SEMANTICS","_useWeb5Link","useWeb5Link","_useConversation","useConversation","_useDebugImageContext","useDebugImageContext","_useResolvedImageSources","useResolvedImageSources","_useResolveGenericEntityData","useResolveGenericEntityData","_useEntityTransforms","useEntityTransforms","_useMarkdownUtils","useMarkdownUtils","_useResolveShopifyEntityData","useResolveShopifyEntityData","_useResolveSearchSpringEntityData","useResolveSearchSpringEntityData","_searchspring","fetchProductsByHandles","fetchProductsByHandlesMap","transformSSProductToEntityItemData","_cart","addToCart","_shopify","ShopifyStorefrontClient","resolveShopifyConfig","resolveShopifyEntity","transformShopifyProduct","transformShopifyCollection","transformShopifyArticle","transformShopifyEntityToItemData","PRODUCT_BY_HANDLE_QUERY","COLLECTION_BY_HANDLE_QUERY","ARTICLE_BY_HANDLE_QUERY","_utils","cn","_imageUtils","normalizeImageUrl","getResizedImageUrl","_imageBackdrop","analyzeBackdrop","computeContentBBox","buildProbeUrl","loadImagePixels","loadBackdropAnalysis","_parseUtils","stripMarkdown","_colorUtils","rgbToHsl","hslToRgb","ensureMinLightness","toRgb","deriveDarkColor","deriveDarkGradient","deriveLightColor","_analyticsEvents","pushEvent","pushPromptSubmit","pushLinkClick","pushError","pushExit","pushEntityFiltered","hasAnalyticsConsent","_privacy","UNKNOWN_CONSENT","HOST_CONSENT_GLOBAL","transmit","mayTransmit","unlockOnUserAction","isUserEngaged","mayPersistIdentity","getConsentSnapshot","getGateView","subscribeToConsent","installConsentProvider","getInstalledProviderName","setConsentBufferLimit","getConsentGateStats","resetConsentGateForTests","detectConsentProvider","initConsentGate","CONSENT_OVERRIDE_KEY","CONSENT_OVERRIDE_QUERY_PARAM","getConsentOverride","setConsentOverride","createShopifyConsentProvider","isShopifyHost","createOneTrustConsentProvider","isOneTrustHost","createHostSuppliedConsentProvider","hasHostSuppliedConsent","publishHostConsent","_errors","ERROR_MARKDOWN","getErrorTypeFromStatus","createErrorMarkdown","STREAMING_TIMEOUT_MS","DEFAULT_ERROR_TEMPLATES","resolveErrorTemplate","_navigationStack","getForwardStack","setForwardStack","clearForwardStack","pushToForwardStack","popFromForwardStack","_UserQuery","UserQuery","_productBackHandoff","PRODUCT_BACK_SESSION_KEY","writeProductBackHandoff","readProductBackHandoff","_PromptEntryEmptyState","PromptEntryEmptyState","_SearchSection","SearchSection","_FeedbackBar","FeedbackBar","_Disclaimer","Disclaimer","_BottomContainer","BottomContainer","_MarkdownText","MarkdownText","_CalloutBlock","CalloutBlock","_OptimizedImage","OptimizedImage","_SectionSkeleton","SectionSkeleton","_SmartIcon","SmartIcon","_Loader","Loader","_PlacementLoader","PlacementLoader","_UnifiedLink","UnifiedLink","detectLinkType","LinkType","_table","Table","TableHeader","TableBody","TableFooter","TableHead","TableRow","TableCell","TableCaption","_userQueryEvent","WEB5_USER_QUERY_EVENT","_answerUpdatedEvent","WEB5_ANSWER_UPDATED_EVENT","_redirectEvent","WEB5_REDIRECT_EVENT","_loadClientBundle","loadClientBundle","_clientBundleOverride","getClientBundleOverride","isTrustedBundleHost","_clientBundleUrl","TEMPLATES_CDN_BASE","TEMPLATES_MANIFEST_URL","getTemplateOverride","isTemplatePickerRequested","isValidTemplateId","resolveClientBundleUrl","_mergeClientConfig","mergeClientConfig","_applyThemeOverrides","applyThemeOverrides","THEME_OVERRIDE_TOKENS","_tokenContract","THEME_TOKEN_CONTRACT","BRAND_TOKENS","EDITABLE_TOKENS","TOKEN_NAME_PATTERN","bucketOf","hostAliasFor","_themeDebug","isThemeDebugEnabled","THEME_DEBUG_KEY","THEME_DEBUG_QUERY_PARAM","_colorFormat","hexToHslTriplet","hslTripletToHex","isHslTriplet","_PlacementResponseRenderer","PlacementResponseRenderer","PlacementSmoothHeight","_buildPlacementDependencies","buildPlacementDependencies","_PlacementPayloadContext","PlacementPayloadProvider","usePlacementPayload","_unifiedMarkdownParser","UnifiedMarkdownParser","parseMarkdownToAst","parseAstToMarkdown","_markdownPreprocessor","escapeWeb5Links","fixMalformedLinks","trimTrailingWhitespace","normalizeIconUrls","decodeLinkText","preprocessMarkdown","_componentTracking","ComponentTracking","_contentKeywordMatcher","findKeywordsInContent","getContextualImageFilename","_intentExtractor","extractIntentFromMarkdown","getIntentFromMarkdown","_propsExtractor","createPageSection","generateSectionId","generateId","findImageInNode","findImageInChildren","_diagnosticsCollector","DiagnosticsCollector","_refreshPrompts","REFRESH_PROMPTS_UNTIL_KEY","REFRESH_PROMPTS_WINDOW_MS","getRefreshPromptsExpiry","shouldRefreshPrompts","enableRefreshPrompts","disableRefreshPrompts","_backendEnvironment","BACKEND_ENVIRONMENT_KEY","BACKEND_ENVIRONMENT_QUERY_PARAM","DEFAULT_BACKEND_ENVIRONMENT","getBackendEnvironment","setBackendEnvironment","usesStagingBackend","_simulation","isSimulationTraffic","_matchDebug","MATCH_DEBUG_KEY","MATCH_DEBUG_QUERY_PARAM","isMatchDebugEnabled","setMatchDebug","resetMatchDebugCache","logMatchDebug","_wixAuthFetch","createWixAuthFetch","_sessionManager","getOrCreateSessionId","getSessionId","getChatId","startNewChatId","setChatId","resetChatIdForTests","_componentParser","parseMarkdownToComponents","tryParseComponent","mergeSectionsWithStableReferences","_hostScope","WEB5_ROOT_ID","WEB5_ROOT_CLASS","WEB5_SCOPES","WEB5_SCOPE","WEB5_GLOBAL_TOKENS"],"sources":["../../src/index.ts"],"sourcesContent":["// Client IDs and experiment IDs\nexport { CLIENT_IDS, EXPERIMENT_IDS } from './clients';\n\nexport {\n type EmbedFeatureToggleResult,\n type FeatureToggleReader,\n createFeatureToggleReader,\n FeatureToggleProvider,\n useFeatureToggles,\n useFeatureToggle,\n} from './featureToggles/FeatureToggleContext';\n\n// Dev-only chrome injection contract for client packages\nexport type { DevEnvironment } from './client/devEnvironment';\n\n// Part types and helpers\nexport {\n type PartType,\n type Part,\n type HeadingPart,\n type ImagePart,\n type LinkPart,\n type ListPart,\n type ListItemPart,\n type KpiItemPart,\n type CardPart,\n type IconPart,\n type CalloutPart,\n type EntityPart,\n getPartsByType,\n getPartByRole,\n getAllByRole,\n getHeading,\n getImages,\n getLinks,\n extractContent,\n extractContentMarkdown,\n deriveRole,\n} from './parts/parts';\n\n// Component types\nexport type {\n BaseCompProps,\n SlotCompProps,\n SectionCompProps,\n SectionCompPropsWithSlot,\n TextCompProps,\n ButtonCompProps,\n ImageCompProps,\n BadgeCompProps,\n HeroButton,\n KpiItemCompProps,\n FeatureItemCompProps,\n FeatureCardCompProps,\n EntityItemData,\n EntityItem,\n GenericEntityData,\n GenericEntityCompProps,\n ComparisonRow,\n ComparisonColumn,\n AiNarrativeCompProps,\n HeroCompProps,\n HeroEntityCompProps,\n KpiCompProps,\n FeatureCardsCompProps,\n EntityCompProps,\n ComparisonCompProps,\n TextBlockCompProps,\n Component,\n BaseComponent,\n SlotComponent,\n SectionComponent,\n TextComponent,\n ButtonComponent,\n ImageComponent,\n BadgeComponent,\n KpiItemComponent,\n FeatureItemComponent,\n FeatureCardComponent,\n GenericEntityComponent,\n AiNarrativeComponent,\n ComparisonSectionComponent,\n TextBlockSectionComponent,\n HeroSectionComponent,\n HeroEntitySectionComponent,\n KpiSectionComponent,\n FeatureCardsSectionComponent,\n EntitySectionComponent,\n PropsOf,\n SectionFixture,\n CtaBannerCompProps,\n CtaBannerSectionComponent,\n CalloutCompProps,\n CalloutSectionComponent,\n NextStepsCompProps,\n NextStepsSectionComponent,\n FeatureSection9PlusCompProps,\n FeatureSection9PlusSectionComponent,\n ListItemsSectionCompProps,\n ListItemsSectionComponent,\n ErrorCompProps,\n ErrorSectionComponent,\n NullCompProps,\n NullSectionComponent,\n SolutionEntityCompProps,\n SolutionEntitySectionComponent,\n SolutionEntityData,\n BlogEntityCompProps,\n BlogEntitySectionComponent,\n BlogEntityData,\n GeneralTextCompProps,\n GeneralTextSectionComponent,\n PersonalizedNarrativeCompProps,\n PersonalizedNarrativeSectionComponent,\n} from './component/types';\n\n// Section definition\nexport type {\n SectionDefinition,\n ParseContext,\n ContextualImageResult,\n DropSection,\n} from './component/section-definition';\nexport { DROP_SECTION } from './component/section-definition';\n\n// Diagnostic types\nexport { DIAGNOSTIC_TYPES } from './component/diagnosticTypes';\nexport type { DiagnosticType } from './component/diagnosticTypes';\n\n// Image search filters\nexport {\n buildImageSearchFilter,\n type ImageSearchFilterString,\n} from './image/imageSearchFilterTypes';\nexport {\n ImageSearchFilterToken,\n backgroundFilter,\n} from './image/imageSearchFilters';\nexport type {\n ContextualImageAsset,\n ImageSourceInput,\n ResolvedImageSource,\n ResolvedImageSourceKind,\n} from './image/contextualImageTypes';\n\n// Section definition classes + createSdkRegistry\nexport {\n HeroSectionDefinition,\n HeroEntitySectionDefinition,\n KpiSectionDefinition,\n FeatureCardsSectionDefinition,\n EntitySectionDefinition,\n EntityCollectionSectionDefinition,\n ComparisonSectionDefinition,\n TextBlockSectionDefinition,\n CtaBannerSectionDefinition,\n CalloutSectionDefinition,\n NextStepsSectionDefinition,\n FeatureSection9PlusDefinition,\n ListItemsSectionDefinition,\n SkipNodesSectionDefinition,\n HtmlCommentSectionDefinition,\n SearchSectionDefinition,\n ErrorSectionDefinition,\n FallbackSectionDefinition,\n createSdkRegistry,\n} from './component/componentDefinitions';\n\n// Registry\nexport { ComponentRegistry } from './registry';\nexport type {\n SlotOptions,\n SectionOptions,\n SectionRegistration,\n SlotNode,\n SlotIntentNode,\n SectionIntentNode,\n SectionNode,\n SlotVariant,\n SectionVariant,\n RegistryCatalog,\n ActionResult,\n ActionHandler,\n} from './registry';\n\n// Pattern validator\nexport {\n validatePattern,\n validatePatternSyntax,\n validatePatternWithBlocks,\n type PatternValidationResult,\n type BlockElement,\n type EnrichedBlockElement,\n type LinkMetadata,\n type LinkAttribute,\n} from './patternValidator';\n\n// Markdown blocks\nexport {\n convertToBlockElements,\n convertToBlockElementsWithMapping,\n type BlockElementsWithMapping,\n} from './markdownBlocks';\n\n// Link types, enum & guards\nexport {\n Web5UrlType,\n type Web5AskUrl,\n type Web5EntityUrl,\n type Web5ImageUrl,\n type Web5IconUrl,\n type Web5ActionUrl,\n type Web5SearchUrl,\n type Web5Url,\n type HttpsUrl,\n type HttpUrl,\n type MailtoUrl,\n type RelativeUrl,\n type NavigableUrl,\n type ValidLinkUrl,\n type AnyKnownUrl,\n type LegacyUrl,\n isWeb5AskUrl,\n isWeb5EntityUrl,\n isWeb5ImageUrl,\n isWeb5IconUrl,\n isWeb5ActionUrl,\n isWeb5SearchUrl,\n isWeb5Url,\n isNavigableUrl,\n isValidLinkUrl,\n isLegacyUrl,\n} from './types/link-types';\n\n// Entity/URL parsing\nexport {\n parseWeb5Url,\n isValidWeb5Url,\n validateLinkUrl,\n type Web5UrlParsed,\n type Web5AskParsed,\n type Web5EntityParsed,\n type Web5ImageParsed,\n type Web5IconParsed,\n type Web5ActionParsed,\n type Web5SearchParsed,\n isEntityLink,\n parseEntityLink,\n extractProtocol,\n extractLinkMetadata,\n} from './utils/entityLinkParser';\n\n// Web5 link validation\nexport {\n findInvalidWeb5Links,\n type InvalidWeb5Link,\n} from './utils/web5LinkValidator';\n\n// Node matchers\nexport { hasImage, isHtmlComment } from './utils/nodeMatchers';\n\n// Match API\nexport {\n matchMarkdown,\n type MarkdownMatchResult,\n matchAllSections,\n type MatchAllSectionsResult,\n nodesToParts,\n} from './match';\n\n// ---------------------------------------------------------------------------\n// DI Infrastructure (moved from @wix/w5-client-circana)\n// ---------------------------------------------------------------------------\n\n// DI context and provider\nexport {\n ComponentDependenciesProvider,\n useComponentDependencies,\n type ComponentDependenciesProviderProps,\n} from './context/ComponentDependenciesContext';\n\n// Raw user query for the current response page\nexport {\n UserQueryProvider,\n useUserQuery,\n type UserQueryProviderProps,\n} from './context/UserQueryContext';\n\n// Chips context (suggestion chips shared between SearchSection and error states)\nexport {\n ChipsProvider,\n useChips,\n type SuggestionChip,\n} from './context/ChipsContext';\n\n// DI types\nexport type {\n ComponentDependencies,\n Web5LinkApi,\n ConversationApi,\n SendMessageTrackingOptions,\n SendMessageOptions,\n ComparisonSubmitPayload,\n ComparisonSelectedProduct,\n ProductComparisonSelectionState,\n ProductComparisonApi,\n EntityTransforms,\n MarkdownUtils,\n ResolveGenericEntityDataOptions,\n} from './types/dependencies';\nexport type {\n ApiPayloadItem,\n EntityTypeConfig,\n EntityConfig,\n EntityExtractionContext,\n} from './types/entity';\nexport {\n defaultExtractor,\n enrichEntitiesFromPayload,\n normalizeEntityItem,\n entityPayloadFromItems,\n mergeEntityData,\n fetchEntityListData,\n listEntityItems,\n LIST_ITEMS_ENDPOINT,\n getEntityExtractor,\n registerEntityExtractor,\n transformToSolutionEntityData,\n transformToBlogPostEntityData,\n transformToGenericEntityData,\n toMatchedOptions,\n formatMoney,\n readCurrencyCode,\n formatPriceField,\n formatProductPriceLabel,\n isProductFamilyEntityType,\n} from './entity';\nexport type {\n EntityExtractor,\n FetchEntityListDataOptions,\n ListEntityItemsOptions,\n MatchedOption,\n ProductPriceFields,\n} from './entity';\nexport {\n CALLOUT_KINDS,\n CALLOUT_SEMANTICS,\n type CalloutKind,\n type CalloutSemantic,\n type Callout,\n} from './types/callout';\n\n// Wrapper hooks\nexport { useWeb5Link } from './hooks/useWeb5Link';\nexport { useConversation } from './hooks/useConversation';\nexport { useDebugImageContext } from './hooks/useDebugImageContext';\nexport { useResolvedImageSources } from './hooks/useResolvedImageSources';\nexport { useResolveGenericEntityData } from './hooks/useResolveGenericEntityData';\nexport { useEntityTransforms } from './hooks/useEntityTransforms';\nexport { useMarkdownUtils } from './hooks/useMarkdownUtils';\nexport { useResolveShopifyEntityData } from './hooks/useResolveShopifyEntityData';\nexport { useResolveSearchSpringEntityData } from './hooks/useResolveSearchSpringEntityData';\n\n// SearchSpring\nexport {\n fetchProductsByHandles,\n fetchProductsByHandlesMap,\n transformSSProductToEntityItemData,\n} from './services/searchspring';\nexport type {\n SearchSpringConfig,\n SSProduct,\n SSSearchResponse,\n SSSizeData,\n} from './services/searchspring';\n\n// Shopify Storefront API\n// Cart actions\nexport { addToCart } from './services/cart';\n\nexport {\n ShopifyStorefrontClient,\n resolveShopifyConfig,\n resolveShopifyEntity,\n transformShopifyProduct,\n transformShopifyCollection,\n transformShopifyArticle,\n transformShopifyEntityToItemData,\n PRODUCT_BY_HANDLE_QUERY,\n COLLECTION_BY_HANDLE_QUERY,\n ARTICLE_BY_HANDLE_QUERY,\n} from './services/shopify';\nexport type {\n ShopifyStorefrontConfig,\n ShopifyProduct,\n ShopifyCollection,\n ShopifyArticle,\n ShopifyImage,\n ShopifyMoneyV2,\n} from './services/shopify';\n\n// Utilities\nexport { cn } from './lib/utils';\nexport { normalizeImageUrl, getResizedImageUrl } from './utils/image-utils';\nexport {\n analyzeBackdrop,\n computeContentBBox,\n buildProbeUrl,\n loadImagePixels,\n loadBackdropAnalysis,\n type BackdropAnalysis,\n type ContentBBox,\n type ImagePixels,\n} from './utils/imageBackdrop';\nexport { stripMarkdown } from './component/componentDefinitions/parse-utils';\n\n// Color utilities\nexport {\n type RGB,\n rgbToHsl,\n hslToRgb,\n ensureMinLightness,\n toRgb,\n deriveDarkColor,\n deriveDarkGradient,\n deriveLightColor,\n} from './color/colorUtils';\n\n// Analytics\nexport {\n pushEvent,\n pushPromptSubmit,\n pushLinkClick,\n pushError,\n pushExit,\n pushEntityFiltered,\n hasAnalyticsConsent,\n type EntityFilteredReason,\n} from './utils/analyticsEvents';\n\n// Consent gate (DL #218)\nexport {\n type ConsentState,\n type ConsentPurpose,\n type GatedPurpose,\n type ConsentSnapshot,\n type ConsentProvider,\n type GateView,\n type HostConsentInput,\n UNKNOWN_CONSENT,\n HOST_CONSENT_GLOBAL,\n transmit,\n mayTransmit,\n unlockOnUserAction,\n isUserEngaged,\n mayPersistIdentity,\n getConsentSnapshot,\n getGateView,\n subscribeToConsent,\n installConsentProvider,\n getInstalledProviderName,\n setConsentBufferLimit,\n getConsentGateStats,\n resetConsentGateForTests,\n detectConsentProvider,\n initConsentGate,\n CONSENT_OVERRIDE_KEY,\n CONSENT_OVERRIDE_QUERY_PARAM,\n getConsentOverride,\n setConsentOverride,\n createShopifyConsentProvider,\n isShopifyHost,\n createOneTrustConsentProvider,\n isOneTrustHost,\n createHostSuppliedConsentProvider,\n hasHostSuppliedConsent,\n publishHostConsent,\n} from './privacy';\n\n// Error handling types and utilities\nexport {\n type ConversationErrorType,\n ERROR_MARKDOWN,\n getErrorTypeFromStatus,\n createErrorMarkdown,\n STREAMING_TIMEOUT_MS,\n type ErrorActionType,\n type ErrorIconType,\n type ErrorTemplateButton,\n type ErrorTemplate,\n type ErrorTemplateOverrides,\n DEFAULT_ERROR_TEMPLATES,\n resolveErrorTemplate,\n} from './errors';\n\n// Navigation utilities\nexport {\n getForwardStack,\n setForwardStack,\n clearForwardStack,\n pushToForwardStack,\n popFromForwardStack,\n} from './utils/navigationStack';\n\n// UI components\nexport {\n UserQuery,\n type UserQueryProps,\n type ProductBackContext,\n} from './components/ui/UserQuery';\nexport {\n PRODUCT_BACK_SESSION_KEY,\n writeProductBackHandoff,\n readProductBackHandoff,\n type ProductBackHandoff,\n} from './utils/productBackHandoff';\nexport {\n PromptEntryEmptyState,\n type PromptEntryEmptyStateProps,\n} from './components/ui/PromptEntryEmptyState';\nexport {\n SearchSection,\n type SearchSectionProps,\n type SearchSectionHandle,\n type ScrollChip,\n} from './components/ui/SearchSection';\nexport {\n FeedbackBar,\n type FeedbackBarProps,\n type FeedbackCategoryOption,\n type FeedbackSentiment,\n type FeedbackSubmitInput,\n} from './components/ui/FeedbackBar';\nexport { Disclaimer, type DisclaimerProps } from './components/ui/Disclaimer';\nexport {\n BottomContainer,\n type BottomContainerProps,\n} from './components/ui/BottomContainer';\nexport { MarkdownText } from './components/ui/MarkdownText';\nexport {\n CalloutBlock,\n type CalloutBlockProps,\n} from './components/ui/CalloutBlock';\nexport {\n OptimizedImage,\n type OptimizedImageProps,\n} from './components/ui/OptimizedImage';\nexport {\n SectionSkeleton,\n type SectionSkeletonProps,\n} from './components/ui/SectionSkeleton';\nexport { SmartIcon, type SmartIconProps } from './components/ui/SmartIcon';\nexport { Loader, type LoaderProps } from './components/ui/Loader';\nexport {\n PlacementLoader,\n type PlacementLoaderProps,\n} from './components/ui/PlacementLoader';\nexport {\n UnifiedLink,\n detectLinkType,\n type UnifiedLinkProps,\n LinkType,\n type LinkVariant,\n} from './components/ui/UnifiedLink';\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n} from './components/ui/table';\n\n// Placement (DL #088, DL #102 behavior declarations)\nexport type {\n PlacementBehaviorConfig,\n PlacementConfig,\n PlacementPrompts,\n} from './types/placement';\n\n// Cross-bundle user-query broadcast event (DL #097 D2)\nexport {\n WEB5_USER_QUERY_EVENT,\n type Web5UserQueryEventDetail,\n type Web5UserQueryEvent,\n} from './types/userQueryEvent';\n\n// Cross-bundle answer-updated broadcast event (B2B-4121)\nexport {\n WEB5_ANSWER_UPDATED_EVENT,\n type Web5AnswerUpdatedEventDetail,\n type Web5AnswerUpdatedEvent,\n} from './types/answerUpdatedEvent';\n\n// Cross-bundle redirect broadcast event (DL #098 D3)\nexport {\n WEB5_REDIRECT_EVENT,\n type Web5RedirectEventDetail,\n type Web5RedirectEvent,\n type Web5RedirectReason,\n} from './types/redirectEvent';\n// `placementFilter` was removed — hero/next-steps exclusion is the prompt's job\n// and placement-specific designs belong as `{ placement: true }` registry\n// variants (resolved automatically via `resolveSection(type, { placement: true })`).\n\n// Client bundle loader (DL #088 D3.3)\nexport { loadClientBundle } from './client/loadClientBundle';\n\n// `?clientBundleUrl=` dev override — shared by `web50-server-ui` and\n// `embed-placement` so the trusted-host gate can't drift between them.\nexport {\n getClientBundleOverride,\n isTrustedBundleHost,\n} from './client/clientBundleOverride';\n\n// Client-UMD URL resolution (DL #094 per-msid, DL #129 per-template) and the\n// universal bundle←backend config merge (DL #129 Q3/Q7) — shared by\n// `web50-server-ui` and `embed-placement`, the two client-bundle load sites.\nexport {\n TEMPLATES_CDN_BASE,\n TEMPLATES_MANIFEST_URL,\n getTemplateOverride,\n isTemplatePickerRequested,\n isValidTemplateId,\n resolveClientBundleUrl,\n} from './client/clientBundleUrl';\nexport {\n mergeClientConfig,\n type DeepPartial,\n} from './client/mergeClientConfig';\nexport {\n applyThemeOverrides,\n THEME_OVERRIDE_TOKENS,\n type ThemeOverrideKey,\n type ThemeOverrides,\n} from './client/applyThemeOverrides';\nexport {\n THEME_TOKEN_CONTRACT,\n BRAND_TOKENS,\n EDITABLE_TOKENS,\n TOKEN_NAME_PATTERN,\n bucketOf,\n hostAliasFor,\n type TokenBucket,\n type TokenContractEntry,\n type TokenType,\n} from './theme/tokenContract';\nexport {\n isThemeDebugEnabled,\n THEME_DEBUG_KEY,\n THEME_DEBUG_QUERY_PARAM,\n type AppliedToken,\n type ThemeOverrideSource,\n} from './client/themeDebug';\nexport {\n hexToHslTriplet,\n hslTripletToHex,\n isHslTriplet,\n} from './theme/colorFormat';\n\n// Placement renderer + DI helper (DL #088 D3.2, D3.4)\nexport {\n PlacementResponseRenderer,\n PlacementSmoothHeight,\n type PlacementResponseRendererProps,\n type PlacementSection,\n type PlacementVariant,\n} from './components/placement/PlacementResponseRenderer';\nexport {\n buildPlacementDependencies,\n type BuildPlacementDependenciesOptions,\n} from './components/placement/buildPlacementDependencies';\nexport {\n PlacementPayloadProvider,\n usePlacementPayload,\n type PlacementPayloadContextValue,\n} from './components/placement/PlacementPayloadContext';\n\n// Markdown parsing utilities — lifted from web50-server-ui (DL #088 B9.1)\nexport {\n UnifiedMarkdownParser,\n parseMarkdownToAst,\n parseAstToMarkdown,\n} from './utils/unifiedMarkdownParser';\nexport {\n escapeWeb5Links,\n fixMalformedLinks,\n trimTrailingWhitespace,\n normalizeIconUrls,\n decodeLinkText,\n preprocessMarkdown,\n type PreprocessorDiagnostic,\n type PreprocessResult,\n} from './utils/markdownPreprocessor';\nexport {\n ComponentTracking,\n type ComponentNodeRange,\n} from './utils/componentTracking';\nexport {\n findKeywordsInContent,\n getContextualImageFilename,\n} from './utils/contentKeywordMatcher';\nexport {\n extractIntentFromMarkdown,\n getIntentFromMarkdown,\n type IntentInfo,\n type IntentExtractionOptions,\n type ResponseState,\n} from './utils/intentExtractor';\nexport type { PageSection } from './types/page-section';\nexport {\n createPageSection,\n generateSectionId,\n generateId,\n findImageInNode,\n findImageInChildren,\n type Product,\n type ComparisonProduct,\n type ProductComparisonSectionProps,\n} from './utils/propsExtractor';\nexport {\n DiagnosticsCollector,\n type DiagnosticEntry,\n} from './utils/diagnosticsCollector';\nexport {\n REFRESH_PROMPTS_UNTIL_KEY,\n REFRESH_PROMPTS_WINDOW_MS,\n getRefreshPromptsExpiry,\n shouldRefreshPrompts,\n enableRefreshPrompts,\n disableRefreshPrompts,\n} from './utils/refreshPrompts';\nexport {\n type BackendEnvironment,\n BACKEND_ENVIRONMENT_KEY,\n BACKEND_ENVIRONMENT_QUERY_PARAM,\n DEFAULT_BACKEND_ENVIRONMENT,\n getBackendEnvironment,\n setBackendEnvironment,\n usesStagingBackend,\n} from './utils/backendEnvironment';\nexport { isSimulationTraffic } from './utils/simulation';\nexport {\n MATCH_DEBUG_KEY,\n MATCH_DEBUG_QUERY_PARAM,\n isMatchDebugEnabled,\n setMatchDebug,\n resetMatchDebugCache,\n logMatchDebug,\n} from './utils/matchDebug';\nexport { createWixAuthFetch } from './client/wixAuthFetch';\nexport {\n getOrCreateSessionId,\n getSessionId,\n getChatId,\n startNewChatId,\n setChatId,\n resetChatIdForTests,\n} from './utils/sessionManager';\n\n// Component parser orchestrator — lifted from web50-server-ui (DL #088 B9.5)\nexport {\n parseMarkdownToComponents,\n tryParseComponent,\n mergeSectionsWithStableReferences,\n type ParseMarkdownOptions,\n type ParseMarkdownResult,\n type ComponentMatch,\n type ParserContext,\n} from './component/componentParser';\nexport type {\n ParserClientConfig,\n EnrichEntityProps,\n} from './component/parser-types';\n\n// Host-mount scope contract — shared by web50-server-ui (which stamps the\n// class and mounts), embed-placement (which mounts the same bundle elsewhere),\n// and the client CDN build (which compiles every selector against it).\nexport {\n WEB5_ROOT_ID,\n WEB5_ROOT_CLASS,\n WEB5_SCOPES,\n WEB5_SCOPE,\n WEB5_GLOBAL_TOKENS,\n type HostFitConfig,\n} from './hostScope';\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.unlockOnUserAction = exports.transmit = exports.subscribeToConsent = exports.setConsentBufferLimit = exports.resetConsentGateForTests = exports.mayTransmit = exports.mayPersistIdentity = exports.isUserEngaged = exports.installConsentProvider = exports.getInstalledProviderName = exports.getGateView = exports.getConsentSnapshot = exports.getConsentGateStats = void 0;
|
|
5
|
+
var _types = require("./types");
|
|
6
|
+
/**
|
|
7
|
+
* The consent gate — DL #218.
|
|
8
|
+
*
|
|
9
|
+
* Every BI, telemetry and analytics emitter in web5 goes through `transmit()`
|
|
10
|
+
* instead of calling its transport directly. The gate exists because the
|
|
11
|
+
* consent signal resolves *after* the events that need it: Shopify's consent
|
|
12
|
+
* API is not on the page by default and has to be requested, and the fedops
|
|
13
|
+
* app-load pair fires inside that window. A boolean checked at each call site
|
|
14
|
+
* can only ever drop an event that is already in flight; the gate can hold it.
|
|
15
|
+
*
|
|
16
|
+
* Two independent unlocks, and they do not compose as a plain "either/or":
|
|
17
|
+
*
|
|
18
|
+
* | consent | engaged | result |
|
|
19
|
+
* |-----------|---------|---------------------------------|
|
|
20
|
+
* | granted | either | transmit |
|
|
21
|
+
* | unknown | no | hold in the buffer |
|
|
22
|
+
* | unknown | yes | transmit, and flush what's held |
|
|
23
|
+
* | denied | yes | still nothing |
|
|
24
|
+
*
|
|
25
|
+
* Denied outranks engaged. A visitor who refused analytics in the banner does
|
|
26
|
+
* not re-enable tracking by typing a question.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/** Held events are dropped past this many — a runaway emitter must not become a leak. */
|
|
30
|
+
const DEFAULT_BUFFER_LIMIT = 50;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* One prefix for the whole consent trail, so `[w5-consent]` in the console
|
|
34
|
+
* filter shows the full story: which CMP was found, what it answered, and for
|
|
35
|
+
* every event whether it was sent, held, dropped or replayed.
|
|
36
|
+
*/
|
|
37
|
+
const LOG_PREFIX = '[w5-consent]';
|
|
38
|
+
const log = (...args) => {
|
|
39
|
+
try {
|
|
40
|
+
console.debug(LOG_PREFIX, ...args);
|
|
41
|
+
} catch {
|
|
42
|
+
// A console that throws must never break a send.
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const describe = s => `analytics=${s.analytics} performance=${s.performance} marketing=${s.marketing}`;
|
|
46
|
+
let snapshot = _types.UNKNOWN_CONSENT;
|
|
47
|
+
let engaged = false;
|
|
48
|
+
let provider = null;
|
|
49
|
+
let unsubscribeProvider = null;
|
|
50
|
+
let buffer = [];
|
|
51
|
+
let bufferLimit = DEFAULT_BUFFER_LIMIT;
|
|
52
|
+
let droppedFromOverflow = 0;
|
|
53
|
+
const listeners = new Set();
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Cached so `getGateView` is referentially stable between changes —
|
|
57
|
+
* `useSyncExternalStore` re-renders forever if the snapshot is a fresh object
|
|
58
|
+
* on every read.
|
|
59
|
+
*/
|
|
60
|
+
let view = Object.freeze({
|
|
61
|
+
consent: _types.UNKNOWN_CONSENT,
|
|
62
|
+
engaged: false
|
|
63
|
+
});
|
|
64
|
+
const rebuildView = () => {
|
|
65
|
+
view = Object.freeze({
|
|
66
|
+
consent: snapshot,
|
|
67
|
+
engaged
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
const notify = () => {
|
|
71
|
+
for (const listener of listeners) {
|
|
72
|
+
try {
|
|
73
|
+
listener();
|
|
74
|
+
} catch {
|
|
75
|
+
// A subscriber that throws must not stop the others, or stop a flush.
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Whether an event for `purpose` may go on the wire right now.
|
|
82
|
+
*
|
|
83
|
+
* `necessary` is always allowed. For everything else: explicit consent wins in
|
|
84
|
+
* both directions, and engagement resolves only the `unknown` case.
|
|
85
|
+
*/
|
|
86
|
+
const mayTransmit = purpose => {
|
|
87
|
+
if (purpose === 'necessary') {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
const state = snapshot[purpose];
|
|
91
|
+
if (state === 'denied') {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
if (state === 'granted') {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
return engaged;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Release everything the gate is holding that is now allowed, and drop
|
|
102
|
+
* everything that is now refused. Anything still `unknown` stays held.
|
|
103
|
+
*
|
|
104
|
+
* Order is preserved among released events, but a flush necessarily emits them
|
|
105
|
+
* later than they were raised — a held app-load event reaches the wire after
|
|
106
|
+
* the prompt that unlocked it. Anything reading these as a timeline has to
|
|
107
|
+
* know that.
|
|
108
|
+
*/
|
|
109
|
+
exports.mayTransmit = mayTransmit;
|
|
110
|
+
const settleBuffer = () => {
|
|
111
|
+
if (buffer.length === 0) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const stillHeld = [];
|
|
115
|
+
const releasing = [];
|
|
116
|
+
for (const held of buffer) {
|
|
117
|
+
if (mayTransmit(held.purpose)) {
|
|
118
|
+
releasing.push(held);
|
|
119
|
+
} else if (snapshot[held.purpose] === 'denied') {
|
|
120
|
+
// dropped on the floor, deliberately and permanently
|
|
121
|
+
} else {
|
|
122
|
+
stillHeld.push(held);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const dropped = buffer.length - stillHeld.length - releasing.length;
|
|
126
|
+
buffer = stillHeld;
|
|
127
|
+
if (releasing.length || dropped) {
|
|
128
|
+
log(`settle — releasing ${releasing.length}` + (dropped ? `, dropping ${dropped} (refused)` : '') + (stillHeld.length ? `, still holding ${stillHeld.length}` : ''));
|
|
129
|
+
}
|
|
130
|
+
for (const held of releasing) {
|
|
131
|
+
try {
|
|
132
|
+
log(` ↳ REPLAY ${held.label} (${held.purpose})`);
|
|
133
|
+
held.send();
|
|
134
|
+
} catch {
|
|
135
|
+
// A failed send must not strand the rest of the flush.
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* The single entry point for anything that would put a request on the wire.
|
|
142
|
+
*
|
|
143
|
+
* Allowed → sent now. Refused → dropped. Not yet known → held until an unlock
|
|
144
|
+
* settles it, or discarded with the page.
|
|
145
|
+
*/
|
|
146
|
+
const transmit = (purpose, send, label = 'event') => {
|
|
147
|
+
if (mayTransmit(purpose)) {
|
|
148
|
+
log(`SEND ${label} (${purpose}) — allowed`);
|
|
149
|
+
send();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (purpose !== 'necessary' && snapshot[purpose] === 'denied') {
|
|
153
|
+
log(`DROP ${label} (${purpose}) — visitor refused`);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (buffer.length >= bufferLimit) {
|
|
157
|
+
droppedFromOverflow += 1;
|
|
158
|
+
log(`DROP ${label} (${purpose}) — buffer full at ${bufferLimit}, ${droppedFromOverflow} lost`);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
buffer.push({
|
|
162
|
+
purpose: purpose,
|
|
163
|
+
send,
|
|
164
|
+
label
|
|
165
|
+
});
|
|
166
|
+
log(`HOLD ${label} (${purpose}) — no answer yet, ${buffer.length} held`);
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* The visitor did something deliberate — submitted a prompt — so the session
|
|
171
|
+
* may be measured even though no CMP has answered.
|
|
172
|
+
*
|
|
173
|
+
* This is the unlock that keeps web5 measurable at all: on a Shopify store
|
|
174
|
+
* with no privacy configuration the consent API never loads, consent stays
|
|
175
|
+
* `unknown` forever, and without this every store would report nothing.
|
|
176
|
+
*
|
|
177
|
+
* It unlocks **transmission only**. Persistent identity stays gated on real
|
|
178
|
+
* consent (see `mayPersistIdentity`) — typing a question is a reason to
|
|
179
|
+
* measure the session, not a reason to persist an identifier across visits.
|
|
180
|
+
* It also cannot override a `denied`.
|
|
181
|
+
*/
|
|
182
|
+
exports.transmit = transmit;
|
|
183
|
+
const unlockOnUserAction = () => {
|
|
184
|
+
if (engaged) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
engaged = true;
|
|
188
|
+
log(`UNLOCK — visitor submitted a prompt; ${buffer.length} held event(s) to settle`);
|
|
189
|
+
rebuildView();
|
|
190
|
+
settleBuffer();
|
|
191
|
+
notify();
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
/** Whether the visitor has taken the deliberate action that unlocks the session. */
|
|
195
|
+
exports.unlockOnUserAction = unlockOnUserAction;
|
|
196
|
+
const isUserEngaged = () => engaged;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Persistent, cross-visit storage of a visitor identifier requires real
|
|
200
|
+
* consent — engagement is deliberately not enough.
|
|
201
|
+
*/
|
|
202
|
+
exports.isUserEngaged = isUserEngaged;
|
|
203
|
+
const mayPersistIdentity = () => snapshot.analytics === 'granted';
|
|
204
|
+
exports.mayPersistIdentity = mayPersistIdentity;
|
|
205
|
+
const getConsentSnapshot = () => snapshot;
|
|
206
|
+
|
|
207
|
+
/** Referentially stable between changes, for `useSyncExternalStore`. */
|
|
208
|
+
exports.getConsentSnapshot = getConsentSnapshot;
|
|
209
|
+
const getGateView = () => view;
|
|
210
|
+
exports.getGateView = getGateView;
|
|
211
|
+
const subscribeToConsent = listener => {
|
|
212
|
+
listeners.add(listener);
|
|
213
|
+
return () => {
|
|
214
|
+
listeners.delete(listener);
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
exports.subscribeToConsent = subscribeToConsent;
|
|
218
|
+
const applySnapshot = next => {
|
|
219
|
+
if (next.analytics === snapshot.analytics && next.marketing === snapshot.marketing && next.performance === snapshot.performance) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
log(`ANSWER — ${describe(snapshot)} → ${describe(next)}`);
|
|
223
|
+
snapshot = Object.freeze({
|
|
224
|
+
...next
|
|
225
|
+
});
|
|
226
|
+
rebuildView();
|
|
227
|
+
settleBuffer();
|
|
228
|
+
notify();
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Install the host's provider. Reads its current state immediately, *then*
|
|
233
|
+
* subscribes — DL #217: a listener registered into an already-rendered page is
|
|
234
|
+
* bound to an event that may have fired long before the bundle executed, so
|
|
235
|
+
* subscribing alone would leave the gate permanently at `unknown`.
|
|
236
|
+
*/
|
|
237
|
+
const installConsentProvider = next => {
|
|
238
|
+
unsubscribeProvider == null || unsubscribeProvider();
|
|
239
|
+
provider = next;
|
|
240
|
+
const initial = next.read();
|
|
241
|
+
log(`provider installed: ${next.name} — reads ${describe(initial)}`);
|
|
242
|
+
applySnapshot(initial);
|
|
243
|
+
unsubscribeProvider = next.subscribe(applySnapshot);
|
|
244
|
+
};
|
|
245
|
+
exports.installConsentProvider = installConsentProvider;
|
|
246
|
+
const getInstalledProviderName = () => {
|
|
247
|
+
var _provider;
|
|
248
|
+
return ((_provider = provider) == null ? void 0 : _provider.name) ?? null;
|
|
249
|
+
};
|
|
250
|
+
exports.getInstalledProviderName = getInstalledProviderName;
|
|
251
|
+
const setConsentBufferLimit = limit => {
|
|
252
|
+
bufferLimit = Math.max(0, limit);
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
/** Diagnostics only — how much the gate is holding, and what it had to drop. */
|
|
256
|
+
exports.setConsentBufferLimit = setConsentBufferLimit;
|
|
257
|
+
const getConsentGateStats = () => ({
|
|
258
|
+
held: buffer.length,
|
|
259
|
+
droppedFromOverflow
|
|
260
|
+
});
|
|
261
|
+
exports.getConsentGateStats = getConsentGateStats;
|
|
262
|
+
const resetConsentGateForTests = () => {
|
|
263
|
+
unsubscribeProvider == null || unsubscribeProvider();
|
|
264
|
+
unsubscribeProvider = null;
|
|
265
|
+
provider = null;
|
|
266
|
+
snapshot = _types.UNKNOWN_CONSENT;
|
|
267
|
+
engaged = false;
|
|
268
|
+
buffer = [];
|
|
269
|
+
bufferLimit = DEFAULT_BUFFER_LIMIT;
|
|
270
|
+
droppedFromOverflow = 0;
|
|
271
|
+
listeners.clear();
|
|
272
|
+
rebuildView();
|
|
273
|
+
};
|
|
274
|
+
exports.resetConsentGateForTests = resetConsentGateForTests;
|
|
275
|
+
//# sourceMappingURL=consentGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_types","require","DEFAULT_BUFFER_LIMIT","LOG_PREFIX","log","args","console","debug","describe","s","analytics","performance","marketing","snapshot","UNKNOWN_CONSENT","engaged","provider","unsubscribeProvider","buffer","bufferLimit","droppedFromOverflow","listeners","Set","view","Object","freeze","consent","rebuildView","notify","listener","mayTransmit","purpose","state","exports","settleBuffer","length","stillHeld","releasing","held","push","dropped","label","send","transmit","unlockOnUserAction","isUserEngaged","mayPersistIdentity","getConsentSnapshot","getGateView","subscribeToConsent","add","delete","applySnapshot","next","installConsentProvider","initial","read","name","subscribe","getInstalledProviderName","_provider","setConsentBufferLimit","limit","Math","max","getConsentGateStats","resetConsentGateForTests","clear"],"sources":["../../../src/privacy/consentGate.ts"],"sourcesContent":["/**\n * The consent gate — DL #218.\n *\n * Every BI, telemetry and analytics emitter in web5 goes through `transmit()`\n * instead of calling its transport directly. The gate exists because the\n * consent signal resolves *after* the events that need it: Shopify's consent\n * API is not on the page by default and has to be requested, and the fedops\n * app-load pair fires inside that window. A boolean checked at each call site\n * can only ever drop an event that is already in flight; the gate can hold it.\n *\n * Two independent unlocks, and they do not compose as a plain \"either/or\":\n *\n * | consent | engaged | result |\n * |-----------|---------|---------------------------------|\n * | granted | either | transmit |\n * | unknown | no | hold in the buffer |\n * | unknown | yes | transmit, and flush what's held |\n * | denied | yes | still nothing |\n *\n * Denied outranks engaged. A visitor who refused analytics in the banner does\n * not re-enable tracking by typing a question.\n */\n\nimport {\n UNKNOWN_CONSENT,\n type ConsentProvider,\n type ConsentPurpose,\n type ConsentSnapshot,\n type GatedPurpose,\n} from './types';\n\n/** Held events are dropped past this many — a runaway emitter must not become a leak. */\nconst DEFAULT_BUFFER_LIMIT = 50;\n\n/**\n * One prefix for the whole consent trail, so `[w5-consent]` in the console\n * filter shows the full story: which CMP was found, what it answered, and for\n * every event whether it was sent, held, dropped or replayed.\n */\nconst LOG_PREFIX = '[w5-consent]';\n\nconst log = (...args: unknown[]): void => {\n try {\n console.debug(LOG_PREFIX, ...args);\n } catch {\n // A console that throws must never break a send.\n }\n};\n\nconst describe = (s: ConsentSnapshot): string =>\n `analytics=${s.analytics} performance=${s.performance} marketing=${s.marketing}`;\n\ninterface HeldEvent {\n purpose: GatedPurpose;\n send: () => void;\n label: string;\n}\n\nexport interface GateView {\n consent: ConsentSnapshot;\n engaged: boolean;\n}\n\ntype Listener = () => void;\n\nlet snapshot: ConsentSnapshot = UNKNOWN_CONSENT;\nlet engaged = false;\nlet provider: ConsentProvider | null = null;\nlet unsubscribeProvider: (() => void) | null = null;\nlet buffer: HeldEvent[] = [];\nlet bufferLimit = DEFAULT_BUFFER_LIMIT;\nlet droppedFromOverflow = 0;\n\nconst listeners = new Set<Listener>();\n\n/**\n * Cached so `getGateView` is referentially stable between changes —\n * `useSyncExternalStore` re-renders forever if the snapshot is a fresh object\n * on every read.\n */\nlet view: GateView = Object.freeze({\n consent: UNKNOWN_CONSENT,\n engaged: false,\n});\n\nconst rebuildView = (): void => {\n view = Object.freeze({ consent: snapshot, engaged });\n};\n\nconst notify = (): void => {\n for (const listener of listeners) {\n try {\n listener();\n } catch {\n // A subscriber that throws must not stop the others, or stop a flush.\n }\n }\n};\n\n/**\n * Whether an event for `purpose` may go on the wire right now.\n *\n * `necessary` is always allowed. For everything else: explicit consent wins in\n * both directions, and engagement resolves only the `unknown` case.\n */\nexport const mayTransmit = (purpose: ConsentPurpose): boolean => {\n if (purpose === 'necessary') {\n return true;\n }\n const state = snapshot[purpose];\n if (state === 'denied') {\n return false;\n }\n if (state === 'granted') {\n return true;\n }\n return engaged;\n};\n\n/**\n * Release everything the gate is holding that is now allowed, and drop\n * everything that is now refused. Anything still `unknown` stays held.\n *\n * Order is preserved among released events, but a flush necessarily emits them\n * later than they were raised — a held app-load event reaches the wire after\n * the prompt that unlocked it. Anything reading these as a timeline has to\n * know that.\n */\nconst settleBuffer = (): void => {\n if (buffer.length === 0) {\n return;\n }\n const stillHeld: HeldEvent[] = [];\n const releasing: HeldEvent[] = [];\n\n for (const held of buffer) {\n if (mayTransmit(held.purpose)) {\n releasing.push(held);\n } else if (snapshot[held.purpose] === 'denied') {\n // dropped on the floor, deliberately and permanently\n } else {\n stillHeld.push(held);\n }\n }\n\n const dropped = buffer.length - stillHeld.length - releasing.length;\n buffer = stillHeld;\n\n if (releasing.length || dropped) {\n log(\n `settle — releasing ${releasing.length}` +\n (dropped ? `, dropping ${dropped} (refused)` : '') +\n (stillHeld.length ? `, still holding ${stillHeld.length}` : ''),\n );\n }\n\n for (const held of releasing) {\n try {\n log(` ↳ REPLAY ${held.label} (${held.purpose})`);\n held.send();\n } catch {\n // A failed send must not strand the rest of the flush.\n }\n }\n};\n\n/**\n * The single entry point for anything that would put a request on the wire.\n *\n * Allowed → sent now. Refused → dropped. Not yet known → held until an unlock\n * settles it, or discarded with the page.\n */\nexport const transmit = (\n purpose: ConsentPurpose,\n send: () => void,\n label = 'event',\n): void => {\n if (mayTransmit(purpose)) {\n log(`SEND ${label} (${purpose}) — allowed`);\n send();\n return;\n }\n if (purpose !== 'necessary' && snapshot[purpose] === 'denied') {\n log(`DROP ${label} (${purpose}) — visitor refused`);\n return;\n }\n if (buffer.length >= bufferLimit) {\n droppedFromOverflow += 1;\n log(\n `DROP ${label} (${purpose}) — buffer full at ${bufferLimit}, ${droppedFromOverflow} lost`,\n );\n return;\n }\n buffer.push({ purpose: purpose as GatedPurpose, send, label });\n log(`HOLD ${label} (${purpose}) — no answer yet, ${buffer.length} held`);\n};\n\n/**\n * The visitor did something deliberate — submitted a prompt — so the session\n * may be measured even though no CMP has answered.\n *\n * This is the unlock that keeps web5 measurable at all: on a Shopify store\n * with no privacy configuration the consent API never loads, consent stays\n * `unknown` forever, and without this every store would report nothing.\n *\n * It unlocks **transmission only**. Persistent identity stays gated on real\n * consent (see `mayPersistIdentity`) — typing a question is a reason to\n * measure the session, not a reason to persist an identifier across visits.\n * It also cannot override a `denied`.\n */\nexport const unlockOnUserAction = (): void => {\n if (engaged) {\n return;\n }\n engaged = true;\n log(\n `UNLOCK — visitor submitted a prompt; ${buffer.length} held event(s) to settle`,\n );\n rebuildView();\n settleBuffer();\n notify();\n};\n\n/** Whether the visitor has taken the deliberate action that unlocks the session. */\nexport const isUserEngaged = (): boolean => engaged;\n\n/**\n * Persistent, cross-visit storage of a visitor identifier requires real\n * consent — engagement is deliberately not enough.\n */\nexport const mayPersistIdentity = (): boolean =>\n snapshot.analytics === 'granted';\n\nexport const getConsentSnapshot = (): ConsentSnapshot => snapshot;\n\n/** Referentially stable between changes, for `useSyncExternalStore`. */\nexport const getGateView = (): GateView => view;\n\nexport const subscribeToConsent = (listener: Listener): (() => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n};\n\nconst applySnapshot = (next: ConsentSnapshot): void => {\n if (\n next.analytics === snapshot.analytics &&\n next.marketing === snapshot.marketing &&\n next.performance === snapshot.performance\n ) {\n return;\n }\n log(`ANSWER — ${describe(snapshot)} → ${describe(next)}`);\n snapshot = Object.freeze({ ...next });\n rebuildView();\n settleBuffer();\n notify();\n};\n\n/**\n * Install the host's provider. Reads its current state immediately, *then*\n * subscribes — DL #217: a listener registered into an already-rendered page is\n * bound to an event that may have fired long before the bundle executed, so\n * subscribing alone would leave the gate permanently at `unknown`.\n */\nexport const installConsentProvider = (next: ConsentProvider): void => {\n unsubscribeProvider?.();\n provider = next;\n const initial = next.read();\n log(`provider installed: ${next.name} — reads ${describe(initial)}`);\n applySnapshot(initial);\n unsubscribeProvider = next.subscribe(applySnapshot);\n};\n\nexport const getInstalledProviderName = (): string | null =>\n provider?.name ?? null;\n\nexport const setConsentBufferLimit = (limit: number): void => {\n bufferLimit = Math.max(0, limit);\n};\n\n/** Diagnostics only — how much the gate is holding, and what it had to drop. */\nexport const getConsentGateStats = (): {\n held: number;\n droppedFromOverflow: number;\n} => ({ held: buffer.length, droppedFromOverflow });\n\nexport const resetConsentGateForTests = (): void => {\n unsubscribeProvider?.();\n unsubscribeProvider = null;\n provider = null;\n snapshot = UNKNOWN_CONSENT;\n engaged = false;\n buffer = [];\n bufferLimit = DEFAULT_BUFFER_LIMIT;\n droppedFromOverflow = 0;\n listeners.clear();\n rebuildView();\n};\n"],"mappings":"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","ignoreList":[]}
|