@wix/web5-core 1.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/cjs/client/clientBundleOverride.js +48 -0
- package/dist/cjs/client/clientBundleOverride.js.map +1 -0
- package/dist/cjs/client/devEnvironment.js +4 -0
- package/dist/cjs/client/devEnvironment.js.map +1 -0
- package/dist/cjs/client/loadClientBundle.js +85 -0
- package/dist/cjs/client/loadClientBundle.js.map +1 -0
- package/dist/cjs/client/wixAuthFetch.js +73 -0
- package/dist/cjs/client/wixAuthFetch.js.map +1 -0
- package/dist/cjs/clients.js +15 -0
- package/dist/cjs/clients.js.map +1 -0
- package/dist/cjs/color/colorUtils.js +126 -0
- package/dist/cjs/color/colorUtils.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/CalloutSectionDefinition.js +67 -0
- package/dist/cjs/component/componentDefinitions/CalloutSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/ComparisonSectionDefinition.js +141 -0
- package/dist/cjs/component/componentDefinitions/ComparisonSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/CtaBannerSectionDefinition.js +85 -0
- package/dist/cjs/component/componentDefinitions/CtaBannerSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/EntitySectionDefinition.js +171 -0
- package/dist/cjs/component/componentDefinitions/EntitySectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/ErrorSectionDefinition.js +81 -0
- package/dist/cjs/component/componentDefinitions/ErrorSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/FallbackSectionDefinition.js +29 -0
- package/dist/cjs/component/componentDefinitions/FallbackSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/FeatureCardsSectionDefinition.js +119 -0
- package/dist/cjs/component/componentDefinitions/FeatureCardsSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/FeatureSection9PlusDefinition.js +75 -0
- package/dist/cjs/component/componentDefinitions/FeatureSection9PlusDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/HeroEntitySectionDefinition.js +124 -0
- package/dist/cjs/component/componentDefinitions/HeroEntitySectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/HeroSectionDefinition.js +209 -0
- package/dist/cjs/component/componentDefinitions/HeroSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/HtmlCommentSectionDefinition.js +19 -0
- package/dist/cjs/component/componentDefinitions/HtmlCommentSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/KpiSectionDefinition.js +114 -0
- package/dist/cjs/component/componentDefinitions/KpiSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/NextStepsSectionDefinition.js +136 -0
- package/dist/cjs/component/componentDefinitions/NextStepsSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/SearchSectionDefinition.js +18 -0
- package/dist/cjs/component/componentDefinitions/SearchSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/SkipNodesSectionDefinition.js +20 -0
- package/dist/cjs/component/componentDefinitions/SkipNodesSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/TextBlockSectionDefinition.js +65 -0
- package/dist/cjs/component/componentDefinitions/TextBlockSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/index.js +48 -0
- package/dist/cjs/component/componentDefinitions/index.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/listItemsSectionDefinition.js +86 -0
- package/dist/cjs/component/componentDefinitions/listItemsSectionDefinition.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/parse-utils.js +434 -0
- package/dist/cjs/component/componentDefinitions/parse-utils.js.map +1 -0
- package/dist/cjs/component/componentDefinitions/specHelpers.js +36 -0
- package/dist/cjs/component/componentDefinitions/specHelpers.js.map +1 -0
- package/dist/cjs/component/componentParser.js +365 -0
- package/dist/cjs/component/componentParser.js.map +1 -0
- package/dist/cjs/component/diagnosticTypes.js +30 -0
- package/dist/cjs/component/diagnosticTypes.js.map +1 -0
- package/dist/cjs/component/parser-types.js +4 -0
- package/dist/cjs/component/parser-types.js.map +1 -0
- package/dist/cjs/component/section-definition.js +4 -0
- package/dist/cjs/component/section-definition.js.map +1 -0
- package/dist/cjs/component/types.js +4 -0
- package/dist/cjs/component/types.js.map +1 -0
- package/dist/cjs/components/placement/PlacementPayloadContext.js +29 -0
- package/dist/cjs/components/placement/PlacementPayloadContext.js.map +1 -0
- package/dist/cjs/components/placement/PlacementResponseRenderer.css +269 -0
- package/dist/cjs/components/placement/PlacementResponseRenderer.js +259 -0
- package/dist/cjs/components/placement/PlacementResponseRenderer.js.map +1 -0
- package/dist/cjs/components/placement/buildPlacementDependencies.js +214 -0
- package/dist/cjs/components/placement/buildPlacementDependencies.js.map +1 -0
- package/dist/cjs/components/ui/BottomContainer.js +26 -0
- package/dist/cjs/components/ui/BottomContainer.js.map +1 -0
- package/dist/cjs/components/ui/CalloutBlock.js +156 -0
- package/dist/cjs/components/ui/CalloutBlock.js.map +1 -0
- package/dist/cjs/components/ui/Disclaimer.css +35 -0
- package/dist/cjs/components/ui/Disclaimer.js +56 -0
- package/dist/cjs/components/ui/Disclaimer.js.map +1 -0
- package/dist/cjs/components/ui/FeedbackBar.css +267 -0
- package/dist/cjs/components/ui/FeedbackBar.js +417 -0
- package/dist/cjs/components/ui/FeedbackBar.js.map +1 -0
- package/dist/cjs/components/ui/Loader.js +73 -0
- package/dist/cjs/components/ui/Loader.js.map +1 -0
- package/dist/cjs/components/ui/MarkdownText.js +419 -0
- package/dist/cjs/components/ui/MarkdownText.js.map +1 -0
- package/dist/cjs/components/ui/OptimizedImage.js +414 -0
- package/dist/cjs/components/ui/OptimizedImage.js.map +1 -0
- package/dist/cjs/components/ui/PlacementLoader.css +101 -0
- package/dist/cjs/components/ui/PlacementLoader.js +62 -0
- package/dist/cjs/components/ui/PlacementLoader.js.map +1 -0
- package/dist/cjs/components/ui/PromptEntryEmptyState.css +172 -0
- package/dist/cjs/components/ui/PromptEntryEmptyState.js +96 -0
- package/dist/cjs/components/ui/PromptEntryEmptyState.js.map +1 -0
- package/dist/cjs/components/ui/SearchSection.css +538 -0
- package/dist/cjs/components/ui/SearchSection.js +550 -0
- package/dist/cjs/components/ui/SearchSection.js.map +1 -0
- package/dist/cjs/components/ui/SectionSkeleton.css +109 -0
- package/dist/cjs/components/ui/SectionSkeleton.js +190 -0
- package/dist/cjs/components/ui/SectionSkeleton.js.map +1 -0
- package/dist/cjs/components/ui/SmartIcon.js +122 -0
- package/dist/cjs/components/ui/SmartIcon.js.map +1 -0
- package/dist/cjs/components/ui/UnifiedLink.js +169 -0
- package/dist/cjs/components/ui/UnifiedLink.js.map +1 -0
- package/dist/cjs/components/ui/UserQuery.js +348 -0
- package/dist/cjs/components/ui/UserQuery.js.map +1 -0
- package/dist/cjs/components/ui/icons/ArrowTopRightIcon.js +37 -0
- package/dist/cjs/components/ui/icons/ArrowTopRightIcon.js.map +1 -0
- package/dist/cjs/components/ui/icons/ArrowUpIcon.js +61 -0
- package/dist/cjs/components/ui/icons/ArrowUpIcon.js.map +1 -0
- package/dist/cjs/components/ui/icons/CheckIcon.js +37 -0
- package/dist/cjs/components/ui/icons/CheckIcon.js.map +1 -0
- package/dist/cjs/components/ui/icons/CommentIcon.js +34 -0
- package/dist/cjs/components/ui/icons/CommentIcon.js.map +1 -0
- package/dist/cjs/components/ui/icons/PlusIcon.js +51 -0
- package/dist/cjs/components/ui/icons/PlusIcon.js.map +1 -0
- package/dist/cjs/components/ui/icons/RedoIcon.js +51 -0
- package/dist/cjs/components/ui/icons/RedoIcon.js.map +1 -0
- package/dist/cjs/components/ui/icons/ShareIcon.js +81 -0
- package/dist/cjs/components/ui/icons/ShareIcon.js.map +1 -0
- package/dist/cjs/components/ui/icons/UndoIcon.js +51 -0
- package/dist/cjs/components/ui/icons/UndoIcon.js.map +1 -0
- package/dist/cjs/components/ui/table.js +159 -0
- package/dist/cjs/components/ui/table.js.map +1 -0
- package/dist/cjs/context/ChipsContext.js +12 -0
- package/dist/cjs/context/ChipsContext.js.map +1 -0
- package/dist/cjs/context/ComponentDependenciesContext.js +32 -0
- package/dist/cjs/context/ComponentDependenciesContext.js.map +1 -0
- package/dist/cjs/entity/defaultExtractor.js +117 -0
- package/dist/cjs/entity/defaultExtractor.js.map +1 -0
- package/dist/cjs/entity/enrichEntitiesFromPayload.js +39 -0
- package/dist/cjs/entity/enrichEntitiesFromPayload.js.map +1 -0
- package/dist/cjs/entity/fetchEntityListData.js +78 -0
- package/dist/cjs/entity/fetchEntityListData.js.map +1 -0
- package/dist/cjs/entity/index.js +41 -0
- package/dist/cjs/entity/index.js.map +1 -0
- package/dist/cjs/entity/types.js +4 -0
- package/dist/cjs/entity/types.js.map +1 -0
- package/dist/cjs/errors/conversationErrorTypes.js +56 -0
- package/dist/cjs/errors/conversationErrorTypes.js.map +1 -0
- package/dist/cjs/errors/errorTemplates.js +86 -0
- package/dist/cjs/errors/errorTemplates.js.map +1 -0
- package/dist/cjs/errors/index.js +13 -0
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/cjs/external-types.d.js +2 -0
- package/dist/cjs/external-types.d.js.map +1 -0
- package/dist/cjs/featureToggles/FeatureToggleContext.js +44 -0
- package/dist/cjs/featureToggles/FeatureToggleContext.js.map +1 -0
- package/dist/cjs/hooks/useConversation.js +10 -0
- package/dist/cjs/hooks/useConversation.js.map +1 -0
- package/dist/cjs/hooks/useDebugImageContext.js +10 -0
- package/dist/cjs/hooks/useDebugImageContext.js.map +1 -0
- package/dist/cjs/hooks/useEntityTransforms.js +10 -0
- package/dist/cjs/hooks/useEntityTransforms.js.map +1 -0
- package/dist/cjs/hooks/useMarkdownUtils.js +10 -0
- package/dist/cjs/hooks/useMarkdownUtils.js.map +1 -0
- package/dist/cjs/hooks/useResolveGenericEntityData.js +10 -0
- package/dist/cjs/hooks/useResolveGenericEntityData.js.map +1 -0
- package/dist/cjs/hooks/useResolveSearchSpringEntityData.js +146 -0
- package/dist/cjs/hooks/useResolveSearchSpringEntityData.js.map +1 -0
- package/dist/cjs/hooks/useResolveShopifyEntityData.js +190 -0
- package/dist/cjs/hooks/useResolveShopifyEntityData.js.map +1 -0
- package/dist/cjs/hooks/useResolvedImageSources.js +160 -0
- package/dist/cjs/hooks/useResolvedImageSources.js.map +1 -0
- package/dist/cjs/hooks/useWeb5Link.js +10 -0
- package/dist/cjs/hooks/useWeb5Link.js.map +1 -0
- package/dist/cjs/image/contextualImageTypes.js +4 -0
- package/dist/cjs/image/contextualImageTypes.js.map +1 -0
- package/dist/cjs/image/imageSearchFilterTypes.js +19 -0
- package/dist/cjs/image/imageSearchFilterTypes.js.map +1 -0
- package/dist/cjs/image/imageSearchFilters.js +22 -0
- package/dist/cjs/image/imageSearchFilters.js.map +1 -0
- package/dist/cjs/index.js +285 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/utils.js +33 -0
- package/dist/cjs/lib/utils.js.map +1 -0
- package/dist/cjs/markdownBlocks.js +645 -0
- package/dist/cjs/markdownBlocks.js.map +1 -0
- package/dist/cjs/match/astToParts.js +374 -0
- package/dist/cjs/match/astToParts.js.map +1 -0
- package/dist/cjs/match/extractProps.js +654 -0
- package/dist/cjs/match/extractProps.js.map +1 -0
- package/dist/cjs/match/index.js +11 -0
- package/dist/cjs/match/index.js.map +1 -0
- package/dist/cjs/match/matchAllSections.js +34 -0
- package/dist/cjs/match/matchAllSections.js.map +1 -0
- package/dist/cjs/match/matchMarkdown.js +39 -0
- package/dist/cjs/match/matchMarkdown.js.map +1 -0
- package/dist/cjs/parts/parts.js +183 -0
- package/dist/cjs/parts/parts.js.map +1 -0
- package/dist/cjs/patternAnalyzer/conflictDetector.js +103 -0
- package/dist/cjs/patternAnalyzer/conflictDetector.js.map +1 -0
- package/dist/cjs/patternAnalyzer/index.js +40 -0
- package/dist/cjs/patternAnalyzer/index.js.map +1 -0
- package/dist/cjs/patternAnalyzer/markdownGenerator.js +347 -0
- package/dist/cjs/patternAnalyzer/markdownGenerator.js.map +1 -0
- package/dist/cjs/patternAnalyzer/mergeDetector.js +505 -0
- package/dist/cjs/patternAnalyzer/mergeDetector.js.map +1 -0
- package/dist/cjs/patternAnalyzer/parserValidator.js +56 -0
- package/dist/cjs/patternAnalyzer/parserValidator.js.map +1 -0
- package/dist/cjs/patternAnalyzer/patternWriter.js +106 -0
- package/dist/cjs/patternAnalyzer/patternWriter.js.map +1 -0
- package/dist/cjs/patternAnalyzer/run.js +140 -0
- package/dist/cjs/patternAnalyzer/run.js.map +1 -0
- package/dist/cjs/patternAnalyzer/types.js +4 -0
- package/dist/cjs/patternAnalyzer/types.js.map +1 -0
- package/dist/cjs/patternValidator/ERROR_MESSAGES.md +110 -0
- package/dist/cjs/patternValidator/README.md +757 -0
- package/dist/cjs/patternValidator/automaton.js +349 -0
- package/dist/cjs/patternValidator/automaton.js.map +1 -0
- package/dist/cjs/patternValidator/index.js +196 -0
- package/dist/cjs/patternValidator/index.js.map +1 -0
- package/dist/cjs/patternValidator/lexer.js +218 -0
- package/dist/cjs/patternValidator/lexer.js.map +1 -0
- package/dist/cjs/patternValidator/matcher.js +722 -0
- package/dist/cjs/patternValidator/matcher.js.map +1 -0
- package/dist/cjs/patternValidator/parser.js +533 -0
- package/dist/cjs/patternValidator/parser.js.map +1 -0
- package/dist/cjs/patternValidator/types.js +4 -0
- package/dist/cjs/patternValidator/types.js.map +1 -0
- package/dist/cjs/patternValidator/validator.test.js +1277 -0
- package/dist/cjs/patternValidator/validator.test.js.map +1 -0
- package/dist/cjs/registry/ComponentRegistry.js +438 -0
- package/dist/cjs/registry/ComponentRegistry.js.map +1 -0
- package/dist/cjs/registry/Intent.js +19 -0
- package/dist/cjs/registry/Intent.js.map +1 -0
- package/dist/cjs/registry/index.js +9 -0
- package/dist/cjs/registry/index.js.map +1 -0
- package/dist/cjs/registry/types.js +4 -0
- package/dist/cjs/registry/types.js.map +1 -0
- package/dist/cjs/services/cart/addToCart.js +147 -0
- package/dist/cjs/services/cart/addToCart.js.map +1 -0
- package/dist/cjs/services/cart/index.js +7 -0
- package/dist/cjs/services/cart/index.js.map +1 -0
- package/dist/cjs/services/searchspring/index.js +10 -0
- package/dist/cjs/services/searchspring/index.js.map +1 -0
- package/dist/cjs/services/searchspring/searchSpringClient.js +49 -0
- package/dist/cjs/services/searchspring/searchSpringClient.js.map +1 -0
- package/dist/cjs/services/searchspring/transformSSProduct.js +70 -0
- package/dist/cjs/services/searchspring/transformSSProduct.js.map +1 -0
- package/dist/cjs/services/searchspring/types.js +4 -0
- package/dist/cjs/services/searchspring/types.js.map +1 -0
- package/dist/cjs/services/shopify/globals.d.js +4 -0
- package/dist/cjs/services/shopify/globals.d.js.map +1 -0
- package/dist/cjs/services/shopify/index.js +22 -0
- package/dist/cjs/services/shopify/index.js.map +1 -0
- package/dist/cjs/services/shopify/queries.js +214 -0
- package/dist/cjs/services/shopify/queries.js.map +1 -0
- package/dist/cjs/services/shopify/resolveStoreDomain.js +28 -0
- package/dist/cjs/services/shopify/resolveStoreDomain.js.map +1 -0
- package/dist/cjs/services/shopify/shopifyEntityResolver.js +109 -0
- package/dist/cjs/services/shopify/shopifyEntityResolver.js.map +1 -0
- package/dist/cjs/services/shopify/shopifyStorefrontClient.js +58 -0
- package/dist/cjs/services/shopify/shopifyStorefrontClient.js.map +1 -0
- package/dist/cjs/services/shopify/transformShopifyEntity.js +137 -0
- package/dist/cjs/services/shopify/transformShopifyEntity.js.map +1 -0
- package/dist/cjs/services/shopify/types.js +4 -0
- package/dist/cjs/services/shopify/types.js.map +1 -0
- package/dist/cjs/styles/base-tokens.css +152 -0
- package/dist/cjs/styles/base-utilities.css +424 -0
- package/dist/cjs/styles/components.css +6 -0
- package/dist/cjs/styles/prompt-input-tokens.css +136 -0
- package/dist/cjs/styles/tailwind-theme.css +138 -0
- package/dist/cjs/test-types.d.js +2 -0
- package/dist/cjs/test-types.d.js.map +1 -0
- package/dist/cjs/testUtils.js +25 -0
- package/dist/cjs/testUtils.js.map +1 -0
- package/dist/cjs/types/answerUpdatedEvent.js +20 -0
- package/dist/cjs/types/answerUpdatedEvent.js.map +1 -0
- package/dist/cjs/types/blog.js +4 -0
- package/dist/cjs/types/blog.js.map +1 -0
- package/dist/cjs/types/callout.js +6 -0
- package/dist/cjs/types/callout.js.map +1 -0
- package/dist/cjs/types/dependencies.js +4 -0
- package/dist/cjs/types/dependencies.js.map +1 -0
- package/dist/cjs/types/entity.js +4 -0
- package/dist/cjs/types/entity.js.map +1 -0
- package/dist/cjs/types/link-types.js +62 -0
- package/dist/cjs/types/link-types.js.map +1 -0
- package/dist/cjs/types/page-section.js +4 -0
- package/dist/cjs/types/page-section.js.map +1 -0
- package/dist/cjs/types/placement.js +4 -0
- package/dist/cjs/types/placement.js.map +1 -0
- package/dist/cjs/types/redirectEvent.js +27 -0
- package/dist/cjs/types/redirectEvent.js.map +1 -0
- package/dist/cjs/types/userQueryEvent.js +19 -0
- package/dist/cjs/types/userQueryEvent.js.map +1 -0
- package/dist/cjs/utils/analyticsEvents.js +91 -0
- package/dist/cjs/utils/analyticsEvents.js.map +1 -0
- package/dist/cjs/utils/componentTracking.js +90 -0
- package/dist/cjs/utils/componentTracking.js.map +1 -0
- package/dist/cjs/utils/contentKeywordMatcher.js +56 -0
- package/dist/cjs/utils/contentKeywordMatcher.js.map +1 -0
- package/dist/cjs/utils/conversationApi.js +52 -0
- package/dist/cjs/utils/conversationApi.js.map +1 -0
- package/dist/cjs/utils/conversationMode.js +23 -0
- package/dist/cjs/utils/conversationMode.js.map +1 -0
- package/dist/cjs/utils/diagnosticsCollector.js +58 -0
- package/dist/cjs/utils/diagnosticsCollector.js.map +1 -0
- package/dist/cjs/utils/entityLinkParser.js +256 -0
- package/dist/cjs/utils/entityLinkParser.js.map +1 -0
- package/dist/cjs/utils/htmlCommentParser.js +122 -0
- package/dist/cjs/utils/htmlCommentParser.js.map +1 -0
- package/dist/cjs/utils/image-utils.js +49 -0
- package/dist/cjs/utils/image-utils.js.map +1 -0
- package/dist/cjs/utils/intentExtractor.js +47 -0
- package/dist/cjs/utils/intentExtractor.js.map +1 -0
- package/dist/cjs/utils/markdownPreprocessor.js +268 -0
- package/dist/cjs/utils/markdownPreprocessor.js.map +1 -0
- package/dist/cjs/utils/navigationStack.js +35 -0
- package/dist/cjs/utils/navigationStack.js.map +1 -0
- package/dist/cjs/utils/nodeMatchers.js +43 -0
- package/dist/cjs/utils/nodeMatchers.js.map +1 -0
- package/dist/cjs/utils/propsExtractor.js +66 -0
- package/dist/cjs/utils/propsExtractor.js.map +1 -0
- package/dist/cjs/utils/sessionManager.js +161 -0
- package/dist/cjs/utils/sessionManager.js.map +1 -0
- package/dist/cjs/utils/unifiedMarkdownParser.js +44 -0
- package/dist/cjs/utils/unifiedMarkdownParser.js.map +1 -0
- package/dist/cjs/utils/web5LinkValidator.js +56 -0
- package/dist/cjs/utils/web5LinkValidator.js.map +1 -0
- package/dist/cjs/utils/web5LinkValidator.test.js +115 -0
- package/dist/cjs/utils/web5LinkValidator.test.js.map +1 -0
- package/dist/esm/client/clientBundleOverride.js +43 -0
- package/dist/esm/client/clientBundleOverride.js.map +1 -0
- package/dist/esm/client/devEnvironment.js +2 -0
- package/dist/esm/client/devEnvironment.js.map +1 -0
- package/dist/esm/client/loadClientBundle.js +82 -0
- package/dist/esm/client/loadClientBundle.js.map +1 -0
- package/dist/esm/client/wixAuthFetch.js +68 -0
- package/dist/esm/client/wixAuthFetch.js.map +1 -0
- package/dist/esm/clients.js +11 -0
- package/dist/esm/clients.js.map +1 -0
- package/dist/esm/color/colorUtils.js +118 -0
- package/dist/esm/color/colorUtils.js.map +1 -0
- package/dist/esm/component/componentDefinitions/CalloutSectionDefinition.js +61 -0
- package/dist/esm/component/componentDefinitions/CalloutSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/ComparisonSectionDefinition.js +135 -0
- package/dist/esm/component/componentDefinitions/ComparisonSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/CtaBannerSectionDefinition.js +79 -0
- package/dist/esm/component/componentDefinitions/CtaBannerSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/EntitySectionDefinition.js +165 -0
- package/dist/esm/component/componentDefinitions/EntitySectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/ErrorSectionDefinition.js +75 -0
- package/dist/esm/component/componentDefinitions/ErrorSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/FallbackSectionDefinition.js +23 -0
- package/dist/esm/component/componentDefinitions/FallbackSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/FeatureCardsSectionDefinition.js +113 -0
- package/dist/esm/component/componentDefinitions/FeatureCardsSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/FeatureSection9PlusDefinition.js +69 -0
- package/dist/esm/component/componentDefinitions/FeatureSection9PlusDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/HeroEntitySectionDefinition.js +119 -0
- package/dist/esm/component/componentDefinitions/HeroEntitySectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/HeroSectionDefinition.js +203 -0
- package/dist/esm/component/componentDefinitions/HeroSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/HtmlCommentSectionDefinition.js +13 -0
- package/dist/esm/component/componentDefinitions/HtmlCommentSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/KpiSectionDefinition.js +108 -0
- package/dist/esm/component/componentDefinitions/KpiSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/NextStepsSectionDefinition.js +130 -0
- package/dist/esm/component/componentDefinitions/NextStepsSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/SearchSectionDefinition.js +12 -0
- package/dist/esm/component/componentDefinitions/SearchSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/SkipNodesSectionDefinition.js +14 -0
- package/dist/esm/component/componentDefinitions/SkipNodesSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/TextBlockSectionDefinition.js +59 -0
- package/dist/esm/component/componentDefinitions/TextBlockSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/index.js +45 -0
- package/dist/esm/component/componentDefinitions/index.js.map +1 -0
- package/dist/esm/component/componentDefinitions/listItemsSectionDefinition.js +80 -0
- package/dist/esm/component/componentDefinitions/listItemsSectionDefinition.js.map +1 -0
- package/dist/esm/component/componentDefinitions/parse-utils.js +412 -0
- package/dist/esm/component/componentDefinitions/parse-utils.js.map +1 -0
- package/dist/esm/component/componentDefinitions/specHelpers.js +31 -0
- package/dist/esm/component/componentDefinitions/specHelpers.js.map +1 -0
- package/dist/esm/component/componentParser.js +358 -0
- package/dist/esm/component/componentParser.js.map +1 -0
- package/dist/esm/component/diagnosticTypes.js +26 -0
- package/dist/esm/component/diagnosticTypes.js.map +1 -0
- package/dist/esm/component/parser-types.js +2 -0
- package/dist/esm/component/parser-types.js.map +1 -0
- package/dist/esm/component/section-definition.js +2 -0
- package/dist/esm/component/section-definition.js.map +1 -0
- package/dist/esm/component/types.js +2 -0
- package/dist/esm/component/types.js.map +1 -0
- package/dist/esm/components/placement/PlacementPayloadContext.js +24 -0
- package/dist/esm/components/placement/PlacementPayloadContext.js.map +1 -0
- package/dist/esm/components/placement/PlacementResponseRenderer.css +269 -0
- package/dist/esm/components/placement/PlacementResponseRenderer.js +173 -0
- package/dist/esm/components/placement/PlacementResponseRenderer.js.map +1 -0
- package/dist/esm/components/placement/buildPlacementDependencies.js +212 -0
- package/dist/esm/components/placement/buildPlacementDependencies.js.map +1 -0
- package/dist/esm/components/ui/BottomContainer.js +14 -0
- package/dist/esm/components/ui/BottomContainer.js.map +1 -0
- package/dist/esm/components/ui/CalloutBlock.js +118 -0
- package/dist/esm/components/ui/CalloutBlock.js.map +1 -0
- package/dist/esm/components/ui/Disclaimer.css +35 -0
- package/dist/esm/components/ui/Disclaimer.js +32 -0
- package/dist/esm/components/ui/Disclaimer.js.map +1 -0
- package/dist/esm/components/ui/FeedbackBar.css +267 -0
- package/dist/esm/components/ui/FeedbackBar.js +221 -0
- package/dist/esm/components/ui/FeedbackBar.js.map +1 -0
- package/dist/esm/components/ui/Loader.js +43 -0
- package/dist/esm/components/ui/Loader.js.map +1 -0
- package/dist/esm/components/ui/MarkdownText.js +283 -0
- package/dist/esm/components/ui/MarkdownText.js.map +1 -0
- package/dist/esm/components/ui/OptimizedImage.js +354 -0
- package/dist/esm/components/ui/OptimizedImage.js.map +1 -0
- package/dist/esm/components/ui/PlacementLoader.css +101 -0
- package/dist/esm/components/ui/PlacementLoader.js +28 -0
- package/dist/esm/components/ui/PlacementLoader.js.map +1 -0
- package/dist/esm/components/ui/PromptEntryEmptyState.css +172 -0
- package/dist/esm/components/ui/PromptEntryEmptyState.js +36 -0
- package/dist/esm/components/ui/PromptEntryEmptyState.js.map +1 -0
- package/dist/esm/components/ui/SearchSection.css +538 -0
- package/dist/esm/components/ui/SearchSection.js +317 -0
- package/dist/esm/components/ui/SearchSection.js.map +1 -0
- package/dist/esm/components/ui/SectionSkeleton.css +109 -0
- package/dist/esm/components/ui/SectionSkeleton.js +100 -0
- package/dist/esm/components/ui/SectionSkeleton.js.map +1 -0
- package/dist/esm/components/ui/SmartIcon.js +91 -0
- package/dist/esm/components/ui/SmartIcon.js.map +1 -0
- package/dist/esm/components/ui/UnifiedLink.js +105 -0
- package/dist/esm/components/ui/UnifiedLink.js.map +1 -0
- package/dist/esm/components/ui/UserQuery.js +167 -0
- package/dist/esm/components/ui/UserQuery.js.map +1 -0
- package/dist/esm/components/ui/icons/ArrowTopRightIcon.js +17 -0
- package/dist/esm/components/ui/icons/ArrowTopRightIcon.js.map +1 -0
- package/dist/esm/components/ui/icons/ArrowUpIcon.js +29 -0
- package/dist/esm/components/ui/icons/ArrowUpIcon.js.map +1 -0
- package/dist/esm/components/ui/icons/CheckIcon.js +17 -0
- package/dist/esm/components/ui/icons/CheckIcon.js.map +1 -0
- package/dist/esm/components/ui/icons/CommentIcon.js +15 -0
- package/dist/esm/components/ui/icons/CommentIcon.js.map +1 -0
- package/dist/esm/components/ui/icons/PlusIcon.js +25 -0
- package/dist/esm/components/ui/icons/PlusIcon.js.map +1 -0
- package/dist/esm/components/ui/icons/RedoIcon.js +25 -0
- package/dist/esm/components/ui/icons/RedoIcon.js.map +1 -0
- package/dist/esm/components/ui/icons/ShareIcon.js +37 -0
- package/dist/esm/components/ui/icons/ShareIcon.js.map +1 -0
- package/dist/esm/components/ui/icons/UndoIcon.js +25 -0
- package/dist/esm/components/ui/icons/UndoIcon.js.map +1 -0
- package/dist/esm/components/ui/table.js +92 -0
- package/dist/esm/components/ui/table.js.map +1 -0
- package/dist/esm/context/ChipsContext.js +7 -0
- package/dist/esm/context/ChipsContext.js.map +1 -0
- package/dist/esm/context/ComponentDependenciesContext.js +19 -0
- package/dist/esm/context/ComponentDependenciesContext.js.map +1 -0
- package/dist/esm/entity/defaultExtractor.js +111 -0
- package/dist/esm/entity/defaultExtractor.js.map +1 -0
- package/dist/esm/entity/enrichEntitiesFromPayload.js +35 -0
- package/dist/esm/entity/enrichEntitiesFromPayload.js.map +1 -0
- package/dist/esm/entity/fetchEntityListData.js +76 -0
- package/dist/esm/entity/fetchEntityListData.js.map +1 -0
- package/dist/esm/entity/index.js +29 -0
- package/dist/esm/entity/index.js.map +1 -0
- package/dist/esm/entity/types.js +2 -0
- package/dist/esm/entity/types.js.map +1 -0
- package/dist/esm/errors/conversationErrorTypes.js +50 -0
- package/dist/esm/errors/conversationErrorTypes.js.map +1 -0
- package/dist/esm/errors/errorTemplates.js +81 -0
- package/dist/esm/errors/errorTemplates.js.map +1 -0
- package/dist/esm/errors/index.js +3 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/external-types.d.js +2 -0
- package/dist/esm/external-types.d.js.map +1 -0
- package/dist/esm/featureToggles/FeatureToggleContext.js +30 -0
- package/dist/esm/featureToggles/FeatureToggleContext.js.map +1 -0
- package/dist/esm/hooks/useConversation.js +6 -0
- package/dist/esm/hooks/useConversation.js.map +1 -0
- package/dist/esm/hooks/useDebugImageContext.js +6 -0
- package/dist/esm/hooks/useDebugImageContext.js.map +1 -0
- package/dist/esm/hooks/useEntityTransforms.js +6 -0
- package/dist/esm/hooks/useEntityTransforms.js.map +1 -0
- package/dist/esm/hooks/useMarkdownUtils.js +6 -0
- package/dist/esm/hooks/useMarkdownUtils.js.map +1 -0
- package/dist/esm/hooks/useResolveGenericEntityData.js +6 -0
- package/dist/esm/hooks/useResolveGenericEntityData.js.map +1 -0
- package/dist/esm/hooks/useResolveSearchSpringEntityData.js +146 -0
- package/dist/esm/hooks/useResolveSearchSpringEntityData.js.map +1 -0
- package/dist/esm/hooks/useResolveShopifyEntityData.js +191 -0
- package/dist/esm/hooks/useResolveShopifyEntityData.js.map +1 -0
- package/dist/esm/hooks/useResolvedImageSources.js +169 -0
- package/dist/esm/hooks/useResolvedImageSources.js.map +1 -0
- package/dist/esm/hooks/useWeb5Link.js +6 -0
- package/dist/esm/hooks/useWeb5Link.js.map +1 -0
- package/dist/esm/image/contextualImageTypes.js +2 -0
- package/dist/esm/image/contextualImageTypes.js.map +1 -0
- package/dist/esm/image/imageSearchFilterTypes.js +15 -0
- package/dist/esm/image/imageSearchFilterTypes.js.map +1 -0
- package/dist/esm/image/imageSearchFilters.js +18 -0
- package/dist/esm/image/imageSearchFilters.js.map +1 -0
- package/dist/esm/index.js +152 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/utils.js +33 -0
- package/dist/esm/lib/utils.js.map +1 -0
- package/dist/esm/markdownBlocks.js +641 -0
- package/dist/esm/markdownBlocks.js.map +1 -0
- package/dist/esm/match/astToParts.js +371 -0
- package/dist/esm/match/astToParts.js.map +1 -0
- package/dist/esm/match/extractProps.js +634 -0
- package/dist/esm/match/extractProps.js.map +1 -0
- package/dist/esm/match/index.js +4 -0
- package/dist/esm/match/index.js.map +1 -0
- package/dist/esm/match/matchAllSections.js +31 -0
- package/dist/esm/match/matchAllSections.js.map +1 -0
- package/dist/esm/match/matchMarkdown.js +36 -0
- package/dist/esm/match/matchMarkdown.js.map +1 -0
- package/dist/esm/parts/parts.js +171 -0
- package/dist/esm/parts/parts.js.map +1 -0
- package/dist/esm/patternAnalyzer/conflictDetector.js +99 -0
- package/dist/esm/patternAnalyzer/conflictDetector.js.map +1 -0
- package/dist/esm/patternAnalyzer/index.js +36 -0
- package/dist/esm/patternAnalyzer/index.js.map +1 -0
- package/dist/esm/patternAnalyzer/markdownGenerator.js +344 -0
- package/dist/esm/patternAnalyzer/markdownGenerator.js.map +1 -0
- package/dist/esm/patternAnalyzer/mergeDetector.js +504 -0
- package/dist/esm/patternAnalyzer/mergeDetector.js.map +1 -0
- package/dist/esm/patternAnalyzer/parserValidator.js +52 -0
- package/dist/esm/patternAnalyzer/parserValidator.js.map +1 -0
- package/dist/esm/patternAnalyzer/patternWriter.js +102 -0
- package/dist/esm/patternAnalyzer/patternWriter.js.map +1 -0
- package/dist/esm/patternAnalyzer/run.js +138 -0
- package/dist/esm/patternAnalyzer/run.js.map +1 -0
- package/dist/esm/patternAnalyzer/types.js +2 -0
- package/dist/esm/patternAnalyzer/types.js.map +1 -0
- package/dist/esm/patternValidator/ERROR_MESSAGES.md +110 -0
- package/dist/esm/patternValidator/README.md +757 -0
- package/dist/esm/patternValidator/automaton.js +345 -0
- package/dist/esm/patternValidator/automaton.js.map +1 -0
- package/dist/esm/patternValidator/index.js +190 -0
- package/dist/esm/patternValidator/index.js.map +1 -0
- package/dist/esm/patternValidator/lexer.js +214 -0
- package/dist/esm/patternValidator/lexer.js.map +1 -0
- package/dist/esm/patternValidator/matcher.js +717 -0
- package/dist/esm/patternValidator/matcher.js.map +1 -0
- package/dist/esm/patternValidator/parser.js +531 -0
- package/dist/esm/patternValidator/parser.js.map +1 -0
- package/dist/esm/patternValidator/types.js +2 -0
- package/dist/esm/patternValidator/types.js.map +1 -0
- package/dist/esm/patternValidator/validator.test.js +1275 -0
- package/dist/esm/patternValidator/validator.test.js.map +1 -0
- package/dist/esm/registry/ComponentRegistry.js +435 -0
- package/dist/esm/registry/ComponentRegistry.js.map +1 -0
- package/dist/esm/registry/Intent.js +15 -0
- package/dist/esm/registry/Intent.js.map +1 -0
- package/dist/esm/registry/index.js +3 -0
- package/dist/esm/registry/index.js.map +1 -0
- package/dist/esm/registry/types.js +2 -0
- package/dist/esm/registry/types.js.map +1 -0
- package/dist/esm/services/cart/addToCart.js +146 -0
- package/dist/esm/services/cart/addToCart.js.map +1 -0
- package/dist/esm/services/cart/index.js +2 -0
- package/dist/esm/services/cart/index.js.map +1 -0
- package/dist/esm/services/searchspring/index.js +3 -0
- package/dist/esm/services/searchspring/index.js.map +1 -0
- package/dist/esm/services/searchspring/searchSpringClient.js +44 -0
- package/dist/esm/services/searchspring/searchSpringClient.js.map +1 -0
- package/dist/esm/services/searchspring/transformSSProduct.js +66 -0
- package/dist/esm/services/searchspring/transformSSProduct.js.map +1 -0
- package/dist/esm/services/searchspring/types.js +2 -0
- package/dist/esm/services/searchspring/types.js.map +1 -0
- package/dist/esm/services/shopify/globals.d.js +7 -0
- package/dist/esm/services/shopify/globals.d.js.map +1 -0
- package/dist/esm/services/shopify/index.js +6 -0
- package/dist/esm/services/shopify/index.js.map +1 -0
- package/dist/esm/services/shopify/queries.js +210 -0
- package/dist/esm/services/shopify/queries.js.map +1 -0
- package/dist/esm/services/shopify/resolveStoreDomain.js +25 -0
- package/dist/esm/services/shopify/resolveStoreDomain.js.map +1 -0
- package/dist/esm/services/shopify/shopifyEntityResolver.js +105 -0
- package/dist/esm/services/shopify/shopifyEntityResolver.js.map +1 -0
- package/dist/esm/services/shopify/shopifyStorefrontClient.js +52 -0
- package/dist/esm/services/shopify/shopifyStorefrontClient.js.map +1 -0
- package/dist/esm/services/shopify/transformShopifyEntity.js +130 -0
- package/dist/esm/services/shopify/transformShopifyEntity.js.map +1 -0
- package/dist/esm/services/shopify/types.js +2 -0
- package/dist/esm/services/shopify/types.js.map +1 -0
- package/dist/esm/styles/base-tokens.css +152 -0
- package/dist/esm/styles/base-utilities.css +424 -0
- package/dist/esm/styles/components.css +6 -0
- package/dist/esm/styles/prompt-input-tokens.css +136 -0
- package/dist/esm/styles/tailwind-theme.css +138 -0
- package/dist/esm/test-types.d.js +2 -0
- package/dist/esm/test-types.d.js.map +1 -0
- package/dist/esm/testUtils.js +20 -0
- package/dist/esm/testUtils.js.map +1 -0
- package/dist/esm/types/answerUpdatedEvent.js +16 -0
- package/dist/esm/types/answerUpdatedEvent.js.map +1 -0
- package/dist/esm/types/blog.js +2 -0
- package/dist/esm/types/blog.js.map +1 -0
- package/dist/esm/types/callout.js +2 -0
- package/dist/esm/types/callout.js.map +1 -0
- package/dist/esm/types/dependencies.js +2 -0
- package/dist/esm/types/dependencies.js.map +1 -0
- package/dist/esm/types/entity.js +2 -0
- package/dist/esm/types/entity.js.map +1 -0
- package/dist/esm/types/link-types.js +52 -0
- package/dist/esm/types/link-types.js.map +1 -0
- package/dist/esm/types/page-section.js +2 -0
- package/dist/esm/types/page-section.js.map +1 -0
- package/dist/esm/types/placement.js +2 -0
- package/dist/esm/types/placement.js.map +1 -0
- package/dist/esm/types/redirectEvent.js +23 -0
- package/dist/esm/types/redirectEvent.js.map +1 -0
- package/dist/esm/types/userQueryEvent.js +15 -0
- package/dist/esm/types/userQueryEvent.js.map +1 -0
- package/dist/esm/utils/analyticsEvents.js +84 -0
- package/dist/esm/utils/analyticsEvents.js.map +1 -0
- package/dist/esm/utils/componentTracking.js +84 -0
- package/dist/esm/utils/componentTracking.js.map +1 -0
- package/dist/esm/utils/contentKeywordMatcher.js +50 -0
- package/dist/esm/utils/contentKeywordMatcher.js.map +1 -0
- package/dist/esm/utils/conversationApi.js +45 -0
- package/dist/esm/utils/conversationApi.js.map +1 -0
- package/dist/esm/utils/conversationMode.js +18 -0
- package/dist/esm/utils/conversationMode.js.map +1 -0
- package/dist/esm/utils/diagnosticsCollector.js +52 -0
- package/dist/esm/utils/diagnosticsCollector.js.map +1 -0
- package/dist/esm/utils/entityLinkParser.js +246 -0
- package/dist/esm/utils/entityLinkParser.js.map +1 -0
- package/dist/esm/utils/htmlCommentParser.js +117 -0
- package/dist/esm/utils/htmlCommentParser.js.map +1 -0
- package/dist/esm/utils/image-utils.js +45 -0
- package/dist/esm/utils/image-utils.js.map +1 -0
- package/dist/esm/utils/intentExtractor.js +45 -0
- package/dist/esm/utils/intentExtractor.js.map +1 -0
- package/dist/esm/utils/markdownPreprocessor.js +257 -0
- package/dist/esm/utils/markdownPreprocessor.js.map +1 -0
- package/dist/esm/utils/navigationStack.js +27 -0
- package/dist/esm/utils/navigationStack.js.map +1 -0
- package/dist/esm/utils/nodeMatchers.js +38 -0
- package/dist/esm/utils/nodeMatchers.js.map +1 -0
- package/dist/esm/utils/propsExtractor.js +58 -0
- package/dist/esm/utils/propsExtractor.js.map +1 -0
- package/dist/esm/utils/sessionManager.js +151 -0
- package/dist/esm/utils/sessionManager.js.map +1 -0
- package/dist/esm/utils/unifiedMarkdownParser.js +36 -0
- package/dist/esm/utils/unifiedMarkdownParser.js.map +1 -0
- package/dist/esm/utils/web5LinkValidator.js +52 -0
- package/dist/esm/utils/web5LinkValidator.js.map +1 -0
- package/dist/esm/utils/web5LinkValidator.test.js +113 -0
- package/dist/esm/utils/web5LinkValidator.test.js.map +1 -0
- package/dist/types/client/clientBundleOverride.d.ts +26 -0
- package/dist/types/client/clientBundleOverride.d.ts.map +1 -0
- package/dist/types/client/devEnvironment.d.ts +24 -0
- package/dist/types/client/devEnvironment.d.ts.map +1 -0
- package/dist/types/client/loadClientBundle.d.ts +27 -0
- package/dist/types/client/loadClientBundle.d.ts.map +1 -0
- package/dist/types/client/wixAuthFetch.d.ts +12 -0
- package/dist/types/client/wixAuthFetch.d.ts.map +1 -0
- package/dist/types/clients.d.ts +10 -0
- package/dist/types/clients.d.ts.map +1 -0
- package/dist/types/color/colorUtils.d.ts +9 -0
- package/dist/types/color/colorUtils.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/CalloutSectionDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/CalloutSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/ComparisonSectionDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/ComparisonSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/CtaBannerSectionDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/CtaBannerSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/EntitySectionDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/EntitySectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/ErrorSectionDefinition.d.ts +12 -0
- package/dist/types/component/componentDefinitions/ErrorSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/FallbackSectionDefinition.d.ts +16 -0
- package/dist/types/component/componentDefinitions/FallbackSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/FeatureCardsSectionDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/FeatureCardsSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/FeatureSection9PlusDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/FeatureSection9PlusDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/HeroEntitySectionDefinition.d.ts +23 -0
- package/dist/types/component/componentDefinitions/HeroEntitySectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/HeroSectionDefinition.d.ts +12 -0
- package/dist/types/component/componentDefinitions/HeroSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/HtmlCommentSectionDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/HtmlCommentSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/KpiSectionDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/KpiSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/NextStepsSectionDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/NextStepsSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/SearchSectionDefinition.d.ts +10 -0
- package/dist/types/component/componentDefinitions/SearchSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/SkipNodesSectionDefinition.d.ts +12 -0
- package/dist/types/component/componentDefinitions/SkipNodesSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/TextBlockSectionDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/TextBlockSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/index.d.ts +26 -0
- package/dist/types/component/componentDefinitions/index.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/listItemsSectionDefinition.d.ts +11 -0
- package/dist/types/component/componentDefinitions/listItemsSectionDefinition.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/parse-utils.d.ts +88 -0
- package/dist/types/component/componentDefinitions/parse-utils.d.ts.map +1 -0
- package/dist/types/component/componentDefinitions/specHelpers.d.ts +16 -0
- package/dist/types/component/componentDefinitions/specHelpers.d.ts.map +1 -0
- package/dist/types/component/componentParser.d.ts +63 -0
- package/dist/types/component/componentParser.d.ts.map +1 -0
- package/dist/types/component/diagnosticTypes.d.ts +23 -0
- package/dist/types/component/diagnosticTypes.d.ts.map +1 -0
- package/dist/types/component/parser-types.d.ts +71 -0
- package/dist/types/component/parser-types.d.ts.map +1 -0
- package/dist/types/component/section-definition.d.ts +32 -0
- package/dist/types/component/section-definition.d.ts.map +1 -0
- package/dist/types/component/types.d.ts +315 -0
- package/dist/types/component/types.d.ts.map +1 -0
- package/dist/types/components/placement/PlacementPayloadContext.d.ts +20 -0
- package/dist/types/components/placement/PlacementPayloadContext.d.ts.map +1 -0
- package/dist/types/components/placement/PlacementResponseRenderer.d.ts +106 -0
- package/dist/types/components/placement/PlacementResponseRenderer.d.ts.map +1 -0
- package/dist/types/components/placement/buildPlacementDependencies.d.ts +44 -0
- package/dist/types/components/placement/buildPlacementDependencies.d.ts.map +1 -0
- package/dist/types/components/ui/BottomContainer.d.ts +9 -0
- package/dist/types/components/ui/BottomContainer.d.ts.map +1 -0
- package/dist/types/components/ui/CalloutBlock.d.ts +9 -0
- package/dist/types/components/ui/CalloutBlock.d.ts.map +1 -0
- package/dist/types/components/ui/Disclaimer.d.ts +21 -0
- package/dist/types/components/ui/Disclaimer.d.ts.map +1 -0
- package/dist/types/components/ui/FeedbackBar.d.ts +41 -0
- package/dist/types/components/ui/FeedbackBar.d.ts.map +1 -0
- package/dist/types/components/ui/Loader.d.ts +9 -0
- package/dist/types/components/ui/Loader.d.ts.map +1 -0
- package/dist/types/components/ui/MarkdownText.d.ts +9 -0
- package/dist/types/components/ui/MarkdownText.d.ts.map +1 -0
- package/dist/types/components/ui/OptimizedImage.d.ts +59 -0
- package/dist/types/components/ui/OptimizedImage.d.ts.map +1 -0
- package/dist/types/components/ui/PlacementLoader.d.ts +15 -0
- package/dist/types/components/ui/PlacementLoader.d.ts.map +1 -0
- package/dist/types/components/ui/PromptEntryEmptyState.d.ts +21 -0
- package/dist/types/components/ui/PromptEntryEmptyState.d.ts.map +1 -0
- package/dist/types/components/ui/SearchSection.d.ts +37 -0
- package/dist/types/components/ui/SearchSection.d.ts.map +1 -0
- package/dist/types/components/ui/SectionSkeleton.d.ts +27 -0
- package/dist/types/components/ui/SectionSkeleton.d.ts.map +1 -0
- package/dist/types/components/ui/SmartIcon.d.ts +19 -0
- package/dist/types/components/ui/SmartIcon.d.ts.map +1 -0
- package/dist/types/components/ui/UnifiedLink.d.ts +22 -0
- package/dist/types/components/ui/UnifiedLink.d.ts.map +1 -0
- package/dist/types/components/ui/UserQuery.d.ts +33 -0
- package/dist/types/components/ui/UserQuery.d.ts.map +1 -0
- package/dist/types/components/ui/icons/ArrowTopRightIcon.d.ts +3 -0
- package/dist/types/components/ui/icons/ArrowTopRightIcon.d.ts.map +1 -0
- package/dist/types/components/ui/icons/ArrowUpIcon.d.ts +3 -0
- package/dist/types/components/ui/icons/ArrowUpIcon.d.ts.map +1 -0
- package/dist/types/components/ui/icons/CheckIcon.d.ts +3 -0
- package/dist/types/components/ui/icons/CheckIcon.d.ts.map +1 -0
- package/dist/types/components/ui/icons/CommentIcon.d.ts +3 -0
- package/dist/types/components/ui/icons/CommentIcon.d.ts.map +1 -0
- package/dist/types/components/ui/icons/PlusIcon.d.ts +3 -0
- package/dist/types/components/ui/icons/PlusIcon.d.ts.map +1 -0
- package/dist/types/components/ui/icons/RedoIcon.d.ts +3 -0
- package/dist/types/components/ui/icons/RedoIcon.d.ts.map +1 -0
- package/dist/types/components/ui/icons/ShareIcon.d.ts +3 -0
- package/dist/types/components/ui/icons/ShareIcon.d.ts.map +1 -0
- package/dist/types/components/ui/icons/UndoIcon.d.ts +3 -0
- package/dist/types/components/ui/icons/UndoIcon.d.ts.map +1 -0
- package/dist/types/components/ui/table.d.ts +11 -0
- package/dist/types/components/ui/table.d.ts.map +1 -0
- package/dist/types/context/ChipsContext.d.ts +8 -0
- package/dist/types/context/ChipsContext.d.ts.map +1 -0
- package/dist/types/context/ComponentDependenciesContext.d.ts +8 -0
- package/dist/types/context/ComponentDependenciesContext.d.ts.map +1 -0
- package/dist/types/entity/defaultExtractor.d.ts +14 -0
- package/dist/types/entity/defaultExtractor.d.ts.map +1 -0
- package/dist/types/entity/enrichEntitiesFromPayload.d.ts +27 -0
- package/dist/types/entity/enrichEntitiesFromPayload.d.ts.map +1 -0
- package/dist/types/entity/fetchEntityListData.d.ts +20 -0
- package/dist/types/entity/fetchEntityListData.d.ts.map +1 -0
- package/dist/types/entity/index.d.ts +16 -0
- package/dist/types/entity/index.d.ts.map +1 -0
- package/dist/types/entity/types.d.ts +13 -0
- package/dist/types/entity/types.d.ts.map +1 -0
- package/dist/types/errors/conversationErrorTypes.d.ts +20 -0
- package/dist/types/errors/conversationErrorTypes.d.ts.map +1 -0
- package/dist/types/errors/errorTemplates.d.ts +27 -0
- package/dist/types/errors/errorTemplates.d.ts.map +1 -0
- package/dist/types/errors/index.d.ts +3 -0
- package/dist/types/errors/index.d.ts.map +1 -0
- package/dist/types/featureToggles/FeatureToggleContext.d.ts +18 -0
- package/dist/types/featureToggles/FeatureToggleContext.d.ts.map +1 -0
- package/dist/types/hooks/useConversation.d.ts +3 -0
- package/dist/types/hooks/useConversation.d.ts.map +1 -0
- package/dist/types/hooks/useDebugImageContext.d.ts +2 -0
- package/dist/types/hooks/useDebugImageContext.d.ts.map +1 -0
- package/dist/types/hooks/useEntityTransforms.d.ts +3 -0
- package/dist/types/hooks/useEntityTransforms.d.ts.map +1 -0
- package/dist/types/hooks/useMarkdownUtils.d.ts +3 -0
- package/dist/types/hooks/useMarkdownUtils.d.ts.map +1 -0
- package/dist/types/hooks/useResolveGenericEntityData.d.ts +11 -0
- package/dist/types/hooks/useResolveGenericEntityData.d.ts.map +1 -0
- package/dist/types/hooks/useResolveSearchSpringEntityData.d.ts +20 -0
- package/dist/types/hooks/useResolveSearchSpringEntityData.d.ts.map +1 -0
- package/dist/types/hooks/useResolveShopifyEntityData.d.ts +21 -0
- package/dist/types/hooks/useResolveShopifyEntityData.d.ts.map +1 -0
- package/dist/types/hooks/useResolvedImageSources.d.ts +6 -0
- package/dist/types/hooks/useResolvedImageSources.d.ts.map +1 -0
- package/dist/types/hooks/useWeb5Link.d.ts +3 -0
- package/dist/types/hooks/useWeb5Link.d.ts.map +1 -0
- package/dist/types/image/contextualImageTypes.d.ts +17 -0
- package/dist/types/image/contextualImageTypes.d.ts.map +1 -0
- package/dist/types/image/imageSearchFilterTypes.d.ts +14 -0
- package/dist/types/image/imageSearchFilterTypes.d.ts.map +1 -0
- package/dist/types/image/imageSearchFilters.d.ts +16 -0
- package/dist/types/image/imageSearchFilters.d.ts.map +1 -0
- package/dist/types/index.d.ts +88 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/lib/utils.d.ts +3 -0
- package/dist/types/lib/utils.d.ts.map +1 -0
- package/dist/types/markdownBlocks.d.ts +44 -0
- package/dist/types/markdownBlocks.d.ts.map +1 -0
- package/dist/types/match/astToParts.d.ts +15 -0
- package/dist/types/match/astToParts.d.ts.map +1 -0
- package/dist/types/match/extractProps.d.ts +207 -0
- package/dist/types/match/extractProps.d.ts.map +1 -0
- package/dist/types/match/index.d.ts +4 -0
- package/dist/types/match/index.d.ts.map +1 -0
- package/dist/types/match/matchAllSections.d.ts +15 -0
- package/dist/types/match/matchAllSections.d.ts.map +1 -0
- package/dist/types/match/matchMarkdown.d.ts +25 -0
- package/dist/types/match/matchMarkdown.d.ts.map +1 -0
- package/dist/types/parts/parts.d.ts +144 -0
- package/dist/types/parts/parts.d.ts.map +1 -0
- package/dist/types/patternAnalyzer/conflictDetector.d.ts +19 -0
- package/dist/types/patternAnalyzer/conflictDetector.d.ts.map +1 -0
- package/dist/types/patternAnalyzer/index.d.ts +10 -0
- package/dist/types/patternAnalyzer/index.d.ts.map +1 -0
- package/dist/types/patternAnalyzer/markdownGenerator.d.ts +9 -0
- package/dist/types/patternAnalyzer/markdownGenerator.d.ts.map +1 -0
- package/dist/types/patternAnalyzer/mergeDetector.d.ts +14 -0
- package/dist/types/patternAnalyzer/mergeDetector.d.ts.map +1 -0
- package/dist/types/patternAnalyzer/parserValidator.d.ts +13 -0
- package/dist/types/patternAnalyzer/parserValidator.d.ts.map +1 -0
- package/dist/types/patternAnalyzer/patternWriter.d.ts +8 -0
- package/dist/types/patternAnalyzer/patternWriter.d.ts.map +1 -0
- package/dist/types/patternAnalyzer/run.d.ts +2 -0
- package/dist/types/patternAnalyzer/run.d.ts.map +1 -0
- package/dist/types/patternAnalyzer/types.d.ts +59 -0
- package/dist/types/patternAnalyzer/types.d.ts.map +1 -0
- package/dist/types/patternValidator/automaton.d.ts +3 -0
- package/dist/types/patternValidator/automaton.d.ts.map +1 -0
- package/dist/types/patternValidator/index.d.ts +48 -0
- package/dist/types/patternValidator/index.d.ts.map +1 -0
- package/dist/types/patternValidator/lexer.d.ts +3 -0
- package/dist/types/patternValidator/lexer.d.ts.map +1 -0
- package/dist/types/patternValidator/matcher.d.ts +14 -0
- package/dist/types/patternValidator/matcher.d.ts.map +1 -0
- package/dist/types/patternValidator/parser.d.ts +14 -0
- package/dist/types/patternValidator/parser.d.ts.map +1 -0
- package/dist/types/patternValidator/types.d.ts +125 -0
- package/dist/types/patternValidator/types.d.ts.map +1 -0
- package/dist/types/patternValidator/validator.test.d.ts +2 -0
- package/dist/types/patternValidator/validator.test.d.ts.map +1 -0
- package/dist/types/registry/ComponentRegistry.d.ts +64 -0
- package/dist/types/registry/ComponentRegistry.d.ts.map +1 -0
- package/dist/types/registry/Intent.d.ts +12 -0
- package/dist/types/registry/Intent.d.ts.map +1 -0
- package/dist/types/registry/index.d.ts +4 -0
- package/dist/types/registry/index.d.ts.map +1 -0
- package/dist/types/registry/types.d.ts +99 -0
- package/dist/types/registry/types.d.ts.map +1 -0
- package/dist/types/services/cart/addToCart.d.ts +26 -0
- package/dist/types/services/cart/addToCart.d.ts.map +1 -0
- package/dist/types/services/cart/index.d.ts +2 -0
- package/dist/types/services/cart/index.d.ts.map +1 -0
- package/dist/types/services/searchspring/index.d.ts +4 -0
- package/dist/types/services/searchspring/index.d.ts.map +1 -0
- package/dist/types/services/searchspring/searchSpringClient.d.ts +13 -0
- package/dist/types/services/searchspring/searchSpringClient.d.ts.map +1 -0
- package/dist/types/services/searchspring/transformSSProduct.d.ts +7 -0
- package/dist/types/services/searchspring/transformSSProduct.d.ts.map +1 -0
- package/dist/types/services/searchspring/types.d.ts +48 -0
- package/dist/types/services/searchspring/types.d.ts.map +1 -0
- package/dist/types/services/shopify/index.d.ts +7 -0
- package/dist/types/services/shopify/index.d.ts.map +1 -0
- package/dist/types/services/shopify/queries.d.ts +13 -0
- package/dist/types/services/shopify/queries.d.ts.map +1 -0
- package/dist/types/services/shopify/resolveStoreDomain.d.ts +14 -0
- package/dist/types/services/shopify/resolveStoreDomain.d.ts.map +1 -0
- package/dist/types/services/shopify/shopifyEntityResolver.d.ts +21 -0
- package/dist/types/services/shopify/shopifyEntityResolver.d.ts.map +1 -0
- package/dist/types/services/shopify/shopifyStorefrontClient.d.ts +19 -0
- package/dist/types/services/shopify/shopifyStorefrontClient.d.ts.map +1 -0
- package/dist/types/services/shopify/transformShopifyEntity.d.ts +11 -0
- package/dist/types/services/shopify/transformShopifyEntity.d.ts.map +1 -0
- package/dist/types/services/shopify/types.d.ts +109 -0
- package/dist/types/services/shopify/types.d.ts.map +1 -0
- package/dist/types/testUtils.d.ts +7 -0
- package/dist/types/testUtils.d.ts.map +1 -0
- package/dist/types/types/answerUpdatedEvent.d.ts +29 -0
- package/dist/types/types/answerUpdatedEvent.d.ts.map +1 -0
- package/dist/types/types/blog.d.ts +22 -0
- package/dist/types/types/blog.d.ts.map +1 -0
- package/dist/types/types/callout.d.ts +7 -0
- package/dist/types/types/callout.d.ts.map +1 -0
- package/dist/types/types/dependencies.d.ts +191 -0
- package/dist/types/types/dependencies.d.ts.map +1 -0
- package/dist/types/types/entity.d.ts +38 -0
- package/dist/types/types/entity.d.ts.map +1 -0
- package/dist/types/types/link-types.d.ts +38 -0
- package/dist/types/types/link-types.d.ts.map +1 -0
- package/dist/types/types/page-section.d.ts +27 -0
- package/dist/types/types/page-section.d.ts.map +1 -0
- package/dist/types/types/placement.d.ts +94 -0
- package/dist/types/types/placement.d.ts.map +1 -0
- package/dist/types/types/redirectEvent.d.ts +42 -0
- package/dist/types/types/redirectEvent.d.ts.map +1 -0
- package/dist/types/types/userQueryEvent.d.ts +24 -0
- package/dist/types/types/userQueryEvent.d.ts.map +1 -0
- package/dist/types/utils/analyticsEvents.d.ts +24 -0
- package/dist/types/utils/analyticsEvents.d.ts.map +1 -0
- package/dist/types/utils/componentTracking.d.ts +55 -0
- package/dist/types/utils/componentTracking.d.ts.map +1 -0
- package/dist/types/utils/contentKeywordMatcher.d.ts +14 -0
- package/dist/types/utils/contentKeywordMatcher.d.ts.map +1 -0
- package/dist/types/utils/conversationApi.d.ts +26 -0
- package/dist/types/utils/conversationApi.d.ts.map +1 -0
- package/dist/types/utils/conversationMode.d.ts +16 -0
- package/dist/types/utils/conversationMode.d.ts.map +1 -0
- package/dist/types/utils/diagnosticsCollector.d.ts +33 -0
- package/dist/types/utils/diagnosticsCollector.d.ts.map +1 -0
- package/dist/types/utils/entityLinkParser.d.ts +97 -0
- package/dist/types/utils/entityLinkParser.d.ts.map +1 -0
- package/dist/types/utils/htmlCommentParser.d.ts +13 -0
- package/dist/types/utils/htmlCommentParser.d.ts.map +1 -0
- package/dist/types/utils/image-utils.d.ts +10 -0
- package/dist/types/utils/image-utils.d.ts.map +1 -0
- package/dist/types/utils/intentExtractor.d.ts +11 -0
- package/dist/types/utils/intentExtractor.d.ts.map +1 -0
- package/dist/types/utils/markdownPreprocessor.d.ts +95 -0
- package/dist/types/utils/markdownPreprocessor.d.ts.map +1 -0
- package/dist/types/utils/navigationStack.d.ts +6 -0
- package/dist/types/utils/navigationStack.d.ts.map +1 -0
- package/dist/types/utils/nodeMatchers.d.ts +10 -0
- package/dist/types/utils/nodeMatchers.d.ts.map +1 -0
- package/dist/types/utils/propsExtractor.d.ts +51 -0
- package/dist/types/utils/propsExtractor.d.ts.map +1 -0
- package/dist/types/utils/sessionManager.d.ts +57 -0
- package/dist/types/utils/sessionManager.d.ts.map +1 -0
- package/dist/types/utils/unifiedMarkdownParser.d.ts +9 -0
- package/dist/types/utils/unifiedMarkdownParser.d.ts.map +1 -0
- package/dist/types/utils/web5LinkValidator.d.ts +14 -0
- package/dist/types/utils/web5LinkValidator.d.ts.map +1 -0
- package/dist/types/utils/web5LinkValidator.test.d.ts +2 -0
- package/dist/types/utils/web5LinkValidator.test.d.ts.map +1 -0
- package/package.json +103 -0
- package/src/styles/base-tokens.css +152 -0
- package/src/styles/base-utilities.css +424 -0
- package/src/styles/components.css +6 -0
- package/src/styles/prompt-input-tokens.css +136 -0
- package/src/styles/tailwind-theme.css +138 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.parseAstToMarkdown = exports.UnifiedMarkdownParser = void 0;
|
|
6
|
+
exports.parseMarkdownToAst = parseMarkdownToAst;
|
|
7
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
|
+
var _unified = require("unified");
|
|
9
|
+
var _remarkParse = _interopRequireDefault(require("remark-parse"));
|
|
10
|
+
var _remarkGfm = _interopRequireDefault(require("remark-gfm"));
|
|
11
|
+
var _mdastUtilToMarkdown = require("mdast-util-to-markdown");
|
|
12
|
+
var _mdastUtilGfm = require("mdast-util-gfm");
|
|
13
|
+
class UnifiedMarkdownParser {
|
|
14
|
+
constructor() {
|
|
15
|
+
(0, _defineProperty2.default)(this, "processor", void 0);
|
|
16
|
+
this.processor = (0, _unified.unified)().use(_remarkParse.default).use(_remarkGfm.default);
|
|
17
|
+
}
|
|
18
|
+
parse(markdown) {
|
|
19
|
+
try {
|
|
20
|
+
return this.processor.parse(markdown);
|
|
21
|
+
} catch (error) {
|
|
22
|
+
console.error('Unified parse error:', error);
|
|
23
|
+
return {
|
|
24
|
+
type: 'root',
|
|
25
|
+
children: []
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.UnifiedMarkdownParser = UnifiedMarkdownParser;
|
|
31
|
+
function parseMarkdownToAst(markdown) {
|
|
32
|
+
const parser = new UnifiedMarkdownParser();
|
|
33
|
+
return parser.parse(markdown);
|
|
34
|
+
}
|
|
35
|
+
const parseAstToMarkdown = nodes => {
|
|
36
|
+
return (0, _mdastUtilToMarkdown.toMarkdown)({
|
|
37
|
+
type: 'root',
|
|
38
|
+
children: nodes
|
|
39
|
+
}, {
|
|
40
|
+
extensions: [(0, _mdastUtilGfm.gfmToMarkdown)()]
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
exports.parseAstToMarkdown = parseAstToMarkdown;
|
|
44
|
+
//# sourceMappingURL=unifiedMarkdownParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_unified","require","_remarkParse","_interopRequireDefault","_remarkGfm","_mdastUtilToMarkdown","_mdastUtilGfm","UnifiedMarkdownParser","constructor","_defineProperty2","default","processor","unified","use","remarkParse","remarkGfm","parse","markdown","error","console","type","children","exports","parseMarkdownToAst","parser","parseAstToMarkdown","nodes","toMarkdown","extensions","gfmToMarkdown"],"sources":["../../../src/utils/unifiedMarkdownParser.ts"],"sourcesContent":["import { unified } from 'unified';\nimport remarkParse from 'remark-parse';\nimport type { Root, Node, RootContent } from 'mdast';\nimport remarkGfm from 'remark-gfm';\nimport { toMarkdown } from 'mdast-util-to-markdown';\nimport { gfmToMarkdown } from 'mdast-util-gfm';\n\nexport class UnifiedMarkdownParser {\n private processor;\n\n constructor() {\n this.processor = unified().use(remarkParse).use(remarkGfm);\n }\n\n parse(markdown: string): Root {\n try {\n return this.processor.parse(markdown) as Root;\n } catch (error) {\n console.error('Unified parse error:', error);\n return { type: 'root', children: [] };\n }\n }\n}\n\nexport function parseMarkdownToAst(markdown: string): Root {\n const parser = new UnifiedMarkdownParser();\n return parser.parse(markdown);\n}\n\nexport const parseAstToMarkdown = (nodes: Node[]): string => {\n return toMarkdown(\n { type: 'root', children: nodes as RootContent[] },\n {\n extensions: [gfmToMarkdown()],\n },\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,UAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,oBAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AAEO,MAAMM,qBAAqB,CAAC;EAGjCC,WAAWA,CAAA,EAAG;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IACZ,IAAI,CAACC,SAAS,GAAG,IAAAC,gBAAO,EAAC,CAAC,CAACC,GAAG,CAACC,oBAAW,CAAC,CAACD,GAAG,CAACE,kBAAS,CAAC;EAC5D;EAEAC,KAAKA,CAACC,QAAgB,EAAQ;IAC5B,IAAI;MACF,OAAO,IAAI,CAACN,SAAS,CAACK,KAAK,CAACC,QAAQ,CAAC;IACvC,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,sBAAsB,EAAEA,KAAK,CAAC;MAC5C,OAAO;QAAEE,IAAI,EAAE,MAAM;QAAEC,QAAQ,EAAE;MAAG,CAAC;IACvC;EACF;AACF;AAACC,OAAA,CAAAf,qBAAA,GAAAA,qBAAA;AAEM,SAASgB,kBAAkBA,CAACN,QAAgB,EAAQ;EACzD,MAAMO,MAAM,GAAG,IAAIjB,qBAAqB,CAAC,CAAC;EAC1C,OAAOiB,MAAM,CAACR,KAAK,CAACC,QAAQ,CAAC;AAC/B;AAEO,MAAMQ,kBAAkB,GAAIC,KAAa,IAAa;EAC3D,OAAO,IAAAC,+BAAU,EACf;IAAEP,IAAI,EAAE,MAAM;IAAEC,QAAQ,EAAEK;EAAuB,CAAC,EAClD;IACEE,UAAU,EAAE,CAAC,IAAAC,2BAAa,EAAC,CAAC;EAC9B,CACF,CAAC;AACH,CAAC;AAACP,OAAA,CAAAG,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.findInvalidWeb5Links = findInvalidWeb5Links;
|
|
5
|
+
var _entityLinkParser = require("./entityLinkParser");
|
|
6
|
+
const LEGACY_PROTOCOLS = ['entity://', 'image://', 'action://', 'ask://'];
|
|
7
|
+
/**
|
|
8
|
+
* Walk AST nodes and find link/image URLs that fail validation:
|
|
9
|
+
* - `web5://` URLs that don't parse,
|
|
10
|
+
* - legacy-protocol URLs (`entity://`, `image://`, etc.),
|
|
11
|
+
* - link nodes with a missing or whitespace-only href.
|
|
12
|
+
*/
|
|
13
|
+
function findInvalidWeb5Links(nodes) {
|
|
14
|
+
const results = [];
|
|
15
|
+
const seen = new Set();
|
|
16
|
+
function visit(node) {
|
|
17
|
+
const url = node.url;
|
|
18
|
+
if (node.type === 'link' && (typeof url !== 'string' || url.trim() === '')) {
|
|
19
|
+
// Use a unique key per node since multiple empty hrefs share the same value.
|
|
20
|
+
const key = `__empty_link__${results.length}`;
|
|
21
|
+
if (!seen.has(key)) {
|
|
22
|
+
seen.add(key);
|
|
23
|
+
results.push({
|
|
24
|
+
url: url ?? '',
|
|
25
|
+
nodeType: node.type,
|
|
26
|
+
reason: 'empty'
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
} else if (url && !seen.has(url)) {
|
|
30
|
+
seen.add(url);
|
|
31
|
+
if (url.startsWith('web5://') && !(0, _entityLinkParser.parseWeb5Url)(url)) {
|
|
32
|
+
results.push({
|
|
33
|
+
url,
|
|
34
|
+
nodeType: node.type,
|
|
35
|
+
reason: 'invalid'
|
|
36
|
+
});
|
|
37
|
+
} else if (LEGACY_PROTOCOLS.some(p => url.startsWith(p))) {
|
|
38
|
+
results.push({
|
|
39
|
+
url,
|
|
40
|
+
nodeType: node.type,
|
|
41
|
+
reason: 'legacy'
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (node.children) {
|
|
46
|
+
for (const child of node.children) {
|
|
47
|
+
visit(child);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
for (const node of nodes) {
|
|
52
|
+
visit(node);
|
|
53
|
+
}
|
|
54
|
+
return results;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=web5LinkValidator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_entityLinkParser","require","LEGACY_PROTOCOLS","findInvalidWeb5Links","nodes","results","seen","Set","visit","node","url","type","trim","key","length","has","add","push","nodeType","reason","startsWith","parseWeb5Url","some","p","children","child"],"sources":["../../../src/utils/web5LinkValidator.ts"],"sourcesContent":["import type { RootContent } from 'mdast';\nimport { parseWeb5Url } from './entityLinkParser';\n\nconst LEGACY_PROTOCOLS = ['entity://', 'image://', 'action://', 'ask://'];\n\nexport interface InvalidWeb5Link {\n url: string;\n nodeType: string;\n reason: 'invalid' | 'legacy' | 'empty';\n}\n\n/**\n * Walk AST nodes and find link/image URLs that fail validation:\n * - `web5://` URLs that don't parse,\n * - legacy-protocol URLs (`entity://`, `image://`, etc.),\n * - link nodes with a missing or whitespace-only href.\n */\nexport function findInvalidWeb5Links(nodes: RootContent[]): InvalidWeb5Link[] {\n const results: InvalidWeb5Link[] = [];\n const seen = new Set<string>();\n\n function visit(node: any) {\n const url: string | undefined = node.url;\n\n if (\n node.type === 'link' &&\n (typeof url !== 'string' || url.trim() === '')\n ) {\n // Use a unique key per node since multiple empty hrefs share the same value.\n const key = `__empty_link__${results.length}`;\n if (!seen.has(key)) {\n seen.add(key);\n results.push({ url: url ?? '', nodeType: node.type, reason: 'empty' });\n }\n } else if (url && !seen.has(url)) {\n seen.add(url);\n\n if (url.startsWith('web5://') && !parseWeb5Url(url)) {\n results.push({ url, nodeType: node.type, reason: 'invalid' });\n } else if (LEGACY_PROTOCOLS.some((p) => url.startsWith(p))) {\n results.push({ url, nodeType: node.type, reason: 'legacy' });\n }\n }\n\n if (node.children) {\n for (const child of node.children) {\n visit(child);\n }\n }\n }\n\n for (const node of nodes) {\n visit(node);\n }\n\n return results;\n}\n"],"mappings":";;;;AACA,IAAAA,iBAAA,GAAAC,OAAA;AAEA,MAAMC,gBAAgB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC;AAQzE;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,oBAAoBA,CAACC,KAAoB,EAAqB;EAC5E,MAAMC,OAA0B,GAAG,EAAE;EACrC,MAAMC,IAAI,GAAG,IAAIC,GAAG,CAAS,CAAC;EAE9B,SAASC,KAAKA,CAACC,IAAS,EAAE;IACxB,MAAMC,GAAuB,GAAGD,IAAI,CAACC,GAAG;IAExC,IACED,IAAI,CAACE,IAAI,KAAK,MAAM,KACnB,OAAOD,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,EAC9C;MACA;MACA,MAAMC,GAAG,GAAG,iBAAiBR,OAAO,CAACS,MAAM,EAAE;MAC7C,IAAI,CAACR,IAAI,CAACS,GAAG,CAACF,GAAG,CAAC,EAAE;QAClBP,IAAI,CAACU,GAAG,CAACH,GAAG,CAAC;QACbR,OAAO,CAACY,IAAI,CAAC;UAAEP,GAAG,EAAEA,GAAG,IAAI,EAAE;UAAEQ,QAAQ,EAAET,IAAI,CAACE,IAAI;UAAEQ,MAAM,EAAE;QAAQ,CAAC,CAAC;MACxE;IACF,CAAC,MAAM,IAAIT,GAAG,IAAI,CAACJ,IAAI,CAACS,GAAG,CAACL,GAAG,CAAC,EAAE;MAChCJ,IAAI,CAACU,GAAG,CAACN,GAAG,CAAC;MAEb,IAAIA,GAAG,CAACU,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAAC,8BAAY,EAACX,GAAG,CAAC,EAAE;QACnDL,OAAO,CAACY,IAAI,CAAC;UAAEP,GAAG;UAAEQ,QAAQ,EAAET,IAAI,CAACE,IAAI;UAAEQ,MAAM,EAAE;QAAU,CAAC,CAAC;MAC/D,CAAC,MAAM,IAAIjB,gBAAgB,CAACoB,IAAI,CAAEC,CAAC,IAAKb,GAAG,CAACU,UAAU,CAACG,CAAC,CAAC,CAAC,EAAE;QAC1DlB,OAAO,CAACY,IAAI,CAAC;UAAEP,GAAG;UAAEQ,QAAQ,EAAET,IAAI,CAACE,IAAI;UAAEQ,MAAM,EAAE;QAAS,CAAC,CAAC;MAC9D;IACF;IAEA,IAAIV,IAAI,CAACe,QAAQ,EAAE;MACjB,KAAK,MAAMC,KAAK,IAAIhB,IAAI,CAACe,QAAQ,EAAE;QACjChB,KAAK,CAACiB,KAAK,CAAC;MACd;IACF;EACF;EAEA,KAAK,MAAMhB,IAAI,IAAIL,KAAK,EAAE;IACxBI,KAAK,CAACC,IAAI,CAAC;EACb;EAEA,OAAOJ,OAAO;AAChB","ignoreList":[]}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _vitest = require("vitest");
|
|
4
|
+
var _web5LinkValidator = require("./web5LinkValidator");
|
|
5
|
+
function makeImageNode(url) {
|
|
6
|
+
return {
|
|
7
|
+
type: 'paragraph',
|
|
8
|
+
children: [{
|
|
9
|
+
type: 'image',
|
|
10
|
+
url,
|
|
11
|
+
alt: '',
|
|
12
|
+
title: null
|
|
13
|
+
}]
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function makeLinkNode(url) {
|
|
17
|
+
return {
|
|
18
|
+
type: 'paragraph',
|
|
19
|
+
children: [{
|
|
20
|
+
type: 'link',
|
|
21
|
+
url,
|
|
22
|
+
children: [{
|
|
23
|
+
type: 'text',
|
|
24
|
+
value: 'link text'
|
|
25
|
+
}]
|
|
26
|
+
}]
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
(0, _vitest.describe)('findInvalidWeb5Links', () => {
|
|
30
|
+
(0, _vitest.it)('returns empty for valid web5:// URLs', () => {
|
|
31
|
+
const nodes = [makeImageNode('web5://icon/chart'), makeImageNode('web5://image/sales'), makeLinkNode('web5://entity/solution/123'), makeLinkNode('web5://action/doSomething'), makeLinkNode('web5://search/query'), makeLinkNode('web5://ask/question')];
|
|
32
|
+
(0, _vitest.expect)((0, _web5LinkValidator.findInvalidWeb5Links)(nodes)).toEqual([]);
|
|
33
|
+
});
|
|
34
|
+
(0, _vitest.it)('detects invalid web5:// URLs with missing slash', () => {
|
|
35
|
+
const nodes = [makeImageNode('web5://icon-chart')];
|
|
36
|
+
const result = (0, _web5LinkValidator.findInvalidWeb5Links)(nodes);
|
|
37
|
+
(0, _vitest.expect)(result).toEqual([{
|
|
38
|
+
url: 'web5://icon-chart',
|
|
39
|
+
nodeType: 'image',
|
|
40
|
+
reason: 'invalid'
|
|
41
|
+
}]);
|
|
42
|
+
});
|
|
43
|
+
(0, _vitest.it)('detects invalid web5:// URLs with unknown type prefix', () => {
|
|
44
|
+
const nodes = [makeLinkNode('web5://unknown/something')];
|
|
45
|
+
const result = (0, _web5LinkValidator.findInvalidWeb5Links)(nodes);
|
|
46
|
+
(0, _vitest.expect)(result).toEqual([{
|
|
47
|
+
url: 'web5://unknown/something',
|
|
48
|
+
nodeType: 'link',
|
|
49
|
+
reason: 'invalid'
|
|
50
|
+
}]);
|
|
51
|
+
});
|
|
52
|
+
(0, _vitest.it)('detects legacy protocol URLs', () => {
|
|
53
|
+
const nodes = [makeLinkNode('entity://solution/123'), makeLinkNode('image://photo.png')];
|
|
54
|
+
const result = (0, _web5LinkValidator.findInvalidWeb5Links)(nodes);
|
|
55
|
+
(0, _vitest.expect)(result).toHaveLength(2);
|
|
56
|
+
(0, _vitest.expect)(result[0]).toEqual({
|
|
57
|
+
url: 'entity://solution/123',
|
|
58
|
+
nodeType: 'link',
|
|
59
|
+
reason: 'legacy'
|
|
60
|
+
});
|
|
61
|
+
(0, _vitest.expect)(result[1]).toEqual({
|
|
62
|
+
url: 'image://photo.png',
|
|
63
|
+
nodeType: 'link',
|
|
64
|
+
reason: 'legacy'
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
(0, _vitest.it)('ignores non-web5 URLs', () => {
|
|
68
|
+
const nodes = [makeLinkNode('https://example.com'), makeLinkNode('mailto:test@test.com'), makeImageNode('https://cdn.example.com/image.png')];
|
|
69
|
+
(0, _vitest.expect)((0, _web5LinkValidator.findInvalidWeb5Links)(nodes)).toEqual([]);
|
|
70
|
+
});
|
|
71
|
+
(0, _vitest.it)('deduplicates same URL appearing multiple times', () => {
|
|
72
|
+
const nodes = [makeImageNode('web5://icon-chart'), makeImageNode('web5://icon-chart')];
|
|
73
|
+
const result = (0, _web5LinkValidator.findInvalidWeb5Links)(nodes);
|
|
74
|
+
(0, _vitest.expect)(result).toHaveLength(1);
|
|
75
|
+
});
|
|
76
|
+
(0, _vitest.it)('handles mixed valid and invalid URLs', () => {
|
|
77
|
+
const nodes = [makeImageNode('web5://icon/chart'), makeImageNode('web5://icon-chart'), makeLinkNode('web5://entity/solution/123'), makeLinkNode('entity://solution/456')];
|
|
78
|
+
const result = (0, _web5LinkValidator.findInvalidWeb5Links)(nodes);
|
|
79
|
+
(0, _vitest.expect)(result).toHaveLength(2);
|
|
80
|
+
(0, _vitest.expect)(result[0].url).toBe('web5://icon-chart');
|
|
81
|
+
(0, _vitest.expect)(result[1].url).toBe('entity://solution/456');
|
|
82
|
+
});
|
|
83
|
+
(0, _vitest.it)('returns empty for empty input', () => {
|
|
84
|
+
(0, _vitest.expect)((0, _web5LinkValidator.findInvalidWeb5Links)([])).toEqual([]);
|
|
85
|
+
});
|
|
86
|
+
(0, _vitest.it)('detects link nodes with empty href', () => {
|
|
87
|
+
const nodes = [makeLinkNode('')];
|
|
88
|
+
const result = (0, _web5LinkValidator.findInvalidWeb5Links)(nodes);
|
|
89
|
+
(0, _vitest.expect)(result).toEqual([{
|
|
90
|
+
url: '',
|
|
91
|
+
nodeType: 'link',
|
|
92
|
+
reason: 'empty'
|
|
93
|
+
}]);
|
|
94
|
+
});
|
|
95
|
+
(0, _vitest.it)('detects link nodes with whitespace-only href', () => {
|
|
96
|
+
const nodes = [makeLinkNode(' ')];
|
|
97
|
+
const result = (0, _web5LinkValidator.findInvalidWeb5Links)(nodes);
|
|
98
|
+
(0, _vitest.expect)(result).toEqual([{
|
|
99
|
+
url: ' ',
|
|
100
|
+
nodeType: 'link',
|
|
101
|
+
reason: 'empty'
|
|
102
|
+
}]);
|
|
103
|
+
});
|
|
104
|
+
(0, _vitest.it)('reports each empty-href link separately (no dedup by url)', () => {
|
|
105
|
+
const nodes = [makeLinkNode(''), makeLinkNode('')];
|
|
106
|
+
const result = (0, _web5LinkValidator.findInvalidWeb5Links)(nodes);
|
|
107
|
+
(0, _vitest.expect)(result).toHaveLength(2);
|
|
108
|
+
(0, _vitest.expect)(result.every(r => r.reason === 'empty')).toBe(true);
|
|
109
|
+
});
|
|
110
|
+
(0, _vitest.it)('does not flag image nodes with empty url as empty-link', () => {
|
|
111
|
+
const nodes = [makeImageNode('')];
|
|
112
|
+
(0, _vitest.expect)((0, _web5LinkValidator.findInvalidWeb5Links)(nodes)).toEqual([]);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=web5LinkValidator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_vitest","require","_web5LinkValidator","makeImageNode","url","type","children","alt","title","makeLinkNode","value","describe","it","nodes","expect","findInvalidWeb5Links","toEqual","result","nodeType","reason","toHaveLength","toBe","every","r"],"sources":["../../../src/utils/web5LinkValidator.test.ts"],"sourcesContent":["import { describe, it, expect } from 'vitest';\nimport { findInvalidWeb5Links } from './web5LinkValidator';\nimport type { RootContent } from 'mdast';\n\nfunction makeImageNode(url: string): RootContent {\n return {\n type: 'paragraph',\n children: [{ type: 'image', url, alt: '', title: null } as any],\n } as any;\n}\n\nfunction makeLinkNode(url: string): RootContent {\n return {\n type: 'paragraph',\n children: [\n {\n type: 'link',\n url,\n children: [{ type: 'text', value: 'link text' }],\n } as any,\n ],\n } as any;\n}\n\ndescribe('findInvalidWeb5Links', () => {\n it('returns empty for valid web5:// URLs', () => {\n const nodes = [\n makeImageNode('web5://icon/chart'),\n makeImageNode('web5://image/sales'),\n makeLinkNode('web5://entity/solution/123'),\n makeLinkNode('web5://action/doSomething'),\n makeLinkNode('web5://search/query'),\n makeLinkNode('web5://ask/question'),\n ];\n expect(findInvalidWeb5Links(nodes)).toEqual([]);\n });\n\n it('detects invalid web5:// URLs with missing slash', () => {\n const nodes = [makeImageNode('web5://icon-chart')];\n const result = findInvalidWeb5Links(nodes);\n expect(result).toEqual([\n { url: 'web5://icon-chart', nodeType: 'image', reason: 'invalid' },\n ]);\n });\n\n it('detects invalid web5:// URLs with unknown type prefix', () => {\n const nodes = [makeLinkNode('web5://unknown/something')];\n const result = findInvalidWeb5Links(nodes);\n expect(result).toEqual([\n {\n url: 'web5://unknown/something',\n nodeType: 'link',\n reason: 'invalid',\n },\n ]);\n });\n\n it('detects legacy protocol URLs', () => {\n const nodes = [\n makeLinkNode('entity://solution/123'),\n makeLinkNode('image://photo.png'),\n ];\n const result = findInvalidWeb5Links(nodes);\n expect(result).toHaveLength(2);\n expect(result[0]).toEqual({\n url: 'entity://solution/123',\n nodeType: 'link',\n reason: 'legacy',\n });\n expect(result[1]).toEqual({\n url: 'image://photo.png',\n nodeType: 'link',\n reason: 'legacy',\n });\n });\n\n it('ignores non-web5 URLs', () => {\n const nodes = [\n makeLinkNode('https://example.com'),\n makeLinkNode('mailto:test@test.com'),\n makeImageNode('https://cdn.example.com/image.png'),\n ];\n expect(findInvalidWeb5Links(nodes)).toEqual([]);\n });\n\n it('deduplicates same URL appearing multiple times', () => {\n const nodes = [\n makeImageNode('web5://icon-chart'),\n makeImageNode('web5://icon-chart'),\n ];\n const result = findInvalidWeb5Links(nodes);\n expect(result).toHaveLength(1);\n });\n\n it('handles mixed valid and invalid URLs', () => {\n const nodes = [\n makeImageNode('web5://icon/chart'),\n makeImageNode('web5://icon-chart'),\n makeLinkNode('web5://entity/solution/123'),\n makeLinkNode('entity://solution/456'),\n ];\n const result = findInvalidWeb5Links(nodes);\n expect(result).toHaveLength(2);\n expect(result[0].url).toBe('web5://icon-chart');\n expect(result[1].url).toBe('entity://solution/456');\n });\n\n it('returns empty for empty input', () => {\n expect(findInvalidWeb5Links([])).toEqual([]);\n });\n\n it('detects link nodes with empty href', () => {\n const nodes = [makeLinkNode('')];\n const result = findInvalidWeb5Links(nodes);\n expect(result).toEqual([{ url: '', nodeType: 'link', reason: 'empty' }]);\n });\n\n it('detects link nodes with whitespace-only href', () => {\n const nodes = [makeLinkNode(' ')];\n const result = findInvalidWeb5Links(nodes);\n expect(result).toEqual([{ url: ' ', nodeType: 'link', reason: 'empty' }]);\n });\n\n it('reports each empty-href link separately (no dedup by url)', () => {\n const nodes = [makeLinkNode(''), makeLinkNode('')];\n const result = findInvalidWeb5Links(nodes);\n expect(result).toHaveLength(2);\n expect(result.every((r) => r.reason === 'empty')).toBe(true);\n });\n\n it('does not flag image nodes with empty url as empty-link', () => {\n const nodes = [makeImageNode('')];\n expect(findInvalidWeb5Links(nodes)).toEqual([]);\n });\n});\n"],"mappings":";;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA;AAGA,SAASE,aAAaA,CAACC,GAAW,EAAe;EAC/C,OAAO;IACLC,IAAI,EAAE,WAAW;IACjBC,QAAQ,EAAE,CAAC;MAAED,IAAI,EAAE,OAAO;MAAED,GAAG;MAAEG,GAAG,EAAE,EAAE;MAAEC,KAAK,EAAE;IAAK,CAAC;EACzD,CAAC;AACH;AAEA,SAASC,YAAYA,CAACL,GAAW,EAAe;EAC9C,OAAO;IACLC,IAAI,EAAE,WAAW;IACjBC,QAAQ,EAAE,CACR;MACED,IAAI,EAAE,MAAM;MACZD,GAAG;MACHE,QAAQ,EAAE,CAAC;QAAED,IAAI,EAAE,MAAM;QAAEK,KAAK,EAAE;MAAY,CAAC;IACjD,CAAC;EAEL,CAAC;AACH;AAEA,IAAAC,gBAAQ,EAAC,sBAAsB,EAAE,MAAM;EACrC,IAAAC,UAAE,EAAC,sCAAsC,EAAE,MAAM;IAC/C,MAAMC,KAAK,GAAG,CACZV,aAAa,CAAC,mBAAmB,CAAC,EAClCA,aAAa,CAAC,oBAAoB,CAAC,EACnCM,YAAY,CAAC,4BAA4B,CAAC,EAC1CA,YAAY,CAAC,2BAA2B,CAAC,EACzCA,YAAY,CAAC,qBAAqB,CAAC,EACnCA,YAAY,CAAC,qBAAqB,CAAC,CACpC;IACD,IAAAK,cAAM,EAAC,IAAAC,uCAAoB,EAACF,KAAK,CAAC,CAAC,CAACG,OAAO,CAAC,EAAE,CAAC;EACjD,CAAC,CAAC;EAEF,IAAAJ,UAAE,EAAC,iDAAiD,EAAE,MAAM;IAC1D,MAAMC,KAAK,GAAG,CAACV,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAMc,MAAM,GAAG,IAAAF,uCAAoB,EAACF,KAAK,CAAC;IAC1C,IAAAC,cAAM,EAACG,MAAM,CAAC,CAACD,OAAO,CAAC,CACrB;MAAEZ,GAAG,EAAE,mBAAmB;MAAEc,QAAQ,EAAE,OAAO;MAAEC,MAAM,EAAE;IAAU,CAAC,CACnE,CAAC;EACJ,CAAC,CAAC;EAEF,IAAAP,UAAE,EAAC,uDAAuD,EAAE,MAAM;IAChE,MAAMC,KAAK,GAAG,CAACJ,YAAY,CAAC,0BAA0B,CAAC,CAAC;IACxD,MAAMQ,MAAM,GAAG,IAAAF,uCAAoB,EAACF,KAAK,CAAC;IAC1C,IAAAC,cAAM,EAACG,MAAM,CAAC,CAACD,OAAO,CAAC,CACrB;MACEZ,GAAG,EAAE,0BAA0B;MAC/Bc,QAAQ,EAAE,MAAM;MAChBC,MAAM,EAAE;IACV,CAAC,CACF,CAAC;EACJ,CAAC,CAAC;EAEF,IAAAP,UAAE,EAAC,8BAA8B,EAAE,MAAM;IACvC,MAAMC,KAAK,GAAG,CACZJ,YAAY,CAAC,uBAAuB,CAAC,EACrCA,YAAY,CAAC,mBAAmB,CAAC,CAClC;IACD,MAAMQ,MAAM,GAAG,IAAAF,uCAAoB,EAACF,KAAK,CAAC;IAC1C,IAAAC,cAAM,EAACG,MAAM,CAAC,CAACG,YAAY,CAAC,CAAC,CAAC;IAC9B,IAAAN,cAAM,EAACG,MAAM,CAAC,CAAC,CAAC,CAAC,CAACD,OAAO,CAAC;MACxBZ,GAAG,EAAE,uBAAuB;MAC5Bc,QAAQ,EAAE,MAAM;MAChBC,MAAM,EAAE;IACV,CAAC,CAAC;IACF,IAAAL,cAAM,EAACG,MAAM,CAAC,CAAC,CAAC,CAAC,CAACD,OAAO,CAAC;MACxBZ,GAAG,EAAE,mBAAmB;MACxBc,QAAQ,EAAE,MAAM;MAChBC,MAAM,EAAE;IACV,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,IAAAP,UAAE,EAAC,uBAAuB,EAAE,MAAM;IAChC,MAAMC,KAAK,GAAG,CACZJ,YAAY,CAAC,qBAAqB,CAAC,EACnCA,YAAY,CAAC,sBAAsB,CAAC,EACpCN,aAAa,CAAC,mCAAmC,CAAC,CACnD;IACD,IAAAW,cAAM,EAAC,IAAAC,uCAAoB,EAACF,KAAK,CAAC,CAAC,CAACG,OAAO,CAAC,EAAE,CAAC;EACjD,CAAC,CAAC;EAEF,IAAAJ,UAAE,EAAC,gDAAgD,EAAE,MAAM;IACzD,MAAMC,KAAK,GAAG,CACZV,aAAa,CAAC,mBAAmB,CAAC,EAClCA,aAAa,CAAC,mBAAmB,CAAC,CACnC;IACD,MAAMc,MAAM,GAAG,IAAAF,uCAAoB,EAACF,KAAK,CAAC;IAC1C,IAAAC,cAAM,EAACG,MAAM,CAAC,CAACG,YAAY,CAAC,CAAC,CAAC;EAChC,CAAC,CAAC;EAEF,IAAAR,UAAE,EAAC,sCAAsC,EAAE,MAAM;IAC/C,MAAMC,KAAK,GAAG,CACZV,aAAa,CAAC,mBAAmB,CAAC,EAClCA,aAAa,CAAC,mBAAmB,CAAC,EAClCM,YAAY,CAAC,4BAA4B,CAAC,EAC1CA,YAAY,CAAC,uBAAuB,CAAC,CACtC;IACD,MAAMQ,MAAM,GAAG,IAAAF,uCAAoB,EAACF,KAAK,CAAC;IAC1C,IAAAC,cAAM,EAACG,MAAM,CAAC,CAACG,YAAY,CAAC,CAAC,CAAC;IAC9B,IAAAN,cAAM,EAACG,MAAM,CAAC,CAAC,CAAC,CAACb,GAAG,CAAC,CAACiB,IAAI,CAAC,mBAAmB,CAAC;IAC/C,IAAAP,cAAM,EAACG,MAAM,CAAC,CAAC,CAAC,CAACb,GAAG,CAAC,CAACiB,IAAI,CAAC,uBAAuB,CAAC;EACrD,CAAC,CAAC;EAEF,IAAAT,UAAE,EAAC,+BAA+B,EAAE,MAAM;IACxC,IAAAE,cAAM,EAAC,IAAAC,uCAAoB,EAAC,EAAE,CAAC,CAAC,CAACC,OAAO,CAAC,EAAE,CAAC;EAC9C,CAAC,CAAC;EAEF,IAAAJ,UAAE,EAAC,oCAAoC,EAAE,MAAM;IAC7C,MAAMC,KAAK,GAAG,CAACJ,YAAY,CAAC,EAAE,CAAC,CAAC;IAChC,MAAMQ,MAAM,GAAG,IAAAF,uCAAoB,EAACF,KAAK,CAAC;IAC1C,IAAAC,cAAM,EAACG,MAAM,CAAC,CAACD,OAAO,CAAC,CAAC;MAAEZ,GAAG,EAAE,EAAE;MAAEc,QAAQ,EAAE,MAAM;MAAEC,MAAM,EAAE;IAAQ,CAAC,CAAC,CAAC;EAC1E,CAAC,CAAC;EAEF,IAAAP,UAAE,EAAC,8CAA8C,EAAE,MAAM;IACvD,MAAMC,KAAK,GAAG,CAACJ,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,MAAMQ,MAAM,GAAG,IAAAF,uCAAoB,EAACF,KAAK,CAAC;IAC1C,IAAAC,cAAM,EAACG,MAAM,CAAC,CAACD,OAAO,CAAC,CAAC;MAAEZ,GAAG,EAAE,KAAK;MAAEc,QAAQ,EAAE,MAAM;MAAEC,MAAM,EAAE;IAAQ,CAAC,CAAC,CAAC;EAC7E,CAAC,CAAC;EAEF,IAAAP,UAAE,EAAC,2DAA2D,EAAE,MAAM;IACpE,MAAMC,KAAK,GAAG,CAACJ,YAAY,CAAC,EAAE,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC;IAClD,MAAMQ,MAAM,GAAG,IAAAF,uCAAoB,EAACF,KAAK,CAAC;IAC1C,IAAAC,cAAM,EAACG,MAAM,CAAC,CAACG,YAAY,CAAC,CAAC,CAAC;IAC9B,IAAAN,cAAM,EAACG,MAAM,CAACK,KAAK,CAAEC,CAAC,IAAKA,CAAC,CAACJ,MAAM,KAAK,OAAO,CAAC,CAAC,CAACE,IAAI,CAAC,IAAI,CAAC;EAC9D,CAAC,CAAC;EAEF,IAAAT,UAAE,EAAC,wDAAwD,EAAE,MAAM;IACjE,MAAMC,KAAK,GAAG,CAACV,aAAa,CAAC,EAAE,CAAC,CAAC;IACjC,IAAAW,cAAM,EAAC,IAAAC,uCAAoB,EAACF,KAAK,CAAC,CAAC,CAACG,OAAO,CAAC,EAAE,CAAC;EACjD,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `?clientBundleUrl=…` dev override — shared between `web50-server-ui`
|
|
3
|
+
* (the main app, DL #094) and `embed-placement` (the Shopify-page widget).
|
|
4
|
+
*
|
|
5
|
+
* Both load a `w5-client-*` UMD at runtime; both need the same per-tab
|
|
6
|
+
* escape hatch for local builds. Centralizing the trusted-host gate here
|
|
7
|
+
* means a new CDN URL is added in one place and can't drift between the
|
|
8
|
+
* two callers — divergence on a security boundary would be a real bug.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const TRUSTED_BUNDLE_HOSTS = new Set(['localhost', 'd13cktzsgh0qls.cloudfront.net']);
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Returns true when `url`'s host is one we'll execute as JavaScript on the
|
|
15
|
+
* caller's page. The boundary is on WHERE the bundle is served from, not on
|
|
16
|
+
* the page origin — `?clientBundleUrl=` works from any storefront.
|
|
17
|
+
*/
|
|
18
|
+
export function isTrustedBundleHost(url) {
|
|
19
|
+
try {
|
|
20
|
+
const {
|
|
21
|
+
hostname
|
|
22
|
+
} = new URL(url);
|
|
23
|
+
return TRUSTED_BUNDLE_HOSTS.has(hostname);
|
|
24
|
+
} catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Reads `?clientBundleUrl=…` from a query string and returns it when the
|
|
31
|
+
* URL points at a trusted host, else `null` (caller falls back to its
|
|
32
|
+
* normal resolver).
|
|
33
|
+
*
|
|
34
|
+
* Examples:
|
|
35
|
+
* ?clientBundleUrl=http://localhost:5001/w5-client-feature-com.umd.js
|
|
36
|
+
* ?clientBundleUrl=https://d13cktzsgh0qls.cloudfront.net/<msid>/latest/w5-components.umd.js
|
|
37
|
+
*/
|
|
38
|
+
export function getClientBundleOverride(search) {
|
|
39
|
+
const value = new URLSearchParams(search).get('clientBundleUrl');
|
|
40
|
+
if (!value || !isTrustedBundleHost(value)) return null;
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=clientBundleOverride.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TRUSTED_BUNDLE_HOSTS","Set","isTrustedBundleHost","url","hostname","URL","has","getClientBundleOverride","search","value","URLSearchParams","get"],"sources":["../../../src/client/clientBundleOverride.ts"],"sourcesContent":["/**\n * `?clientBundleUrl=…` dev override — shared between `web50-server-ui`\n * (the main app, DL #094) and `embed-placement` (the Shopify-page widget).\n *\n * Both load a `w5-client-*` UMD at runtime; both need the same per-tab\n * escape hatch for local builds. Centralizing the trusted-host gate here\n * means a new CDN URL is added in one place and can't drift between the\n * two callers — divergence on a security boundary would be a real bug.\n */\n\nconst TRUSTED_BUNDLE_HOSTS: ReadonlySet<string> = new Set([\n 'localhost',\n 'd13cktzsgh0qls.cloudfront.net',\n]);\n\n/**\n * Returns true when `url`'s host is one we'll execute as JavaScript on the\n * caller's page. The boundary is on WHERE the bundle is served from, not on\n * the page origin — `?clientBundleUrl=` works from any storefront.\n */\nexport function isTrustedBundleHost(url: string): boolean {\n try {\n const { hostname } = new URL(url);\n return TRUSTED_BUNDLE_HOSTS.has(hostname);\n } catch {\n return false;\n }\n}\n\n/**\n * Reads `?clientBundleUrl=…` from a query string and returns it when the\n * URL points at a trusted host, else `null` (caller falls back to its\n * normal resolver).\n *\n * Examples:\n * ?clientBundleUrl=http://localhost:5001/w5-client-feature-com.umd.js\n * ?clientBundleUrl=https://d13cktzsgh0qls.cloudfront.net/<msid>/latest/w5-components.umd.js\n */\nexport function getClientBundleOverride(search: string): string | null {\n const value = new URLSearchParams(search).get('clientBundleUrl');\n if (!value || !isTrustedBundleHost(value)) return null;\n return value;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,oBAAyC,GAAG,IAAIC,GAAG,CAAC,CACxD,WAAW,EACX,+BAA+B,CAChC,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACC,GAAW,EAAW;EACxD,IAAI;IACF,MAAM;MAAEC;IAAS,CAAC,GAAG,IAAIC,GAAG,CAACF,GAAG,CAAC;IACjC,OAAOH,oBAAoB,CAACM,GAAG,CAACF,QAAQ,CAAC;EAC3C,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,uBAAuBA,CAACC,MAAc,EAAiB;EACrE,MAAMC,KAAK,GAAG,IAAIC,eAAe,CAACF,MAAM,CAAC,CAACG,GAAG,CAAC,iBAAiB,CAAC;EAChE,IAAI,CAACF,KAAK,IAAI,CAACP,mBAAmB,CAACO,KAAK,CAAC,EAAE,OAAO,IAAI;EACtD,OAAOA,KAAK;AACd","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["../../../src/client/devEnvironment.ts"],"sourcesContent":["/**\n * Optional dev-only hook each client package can export to wrap the React\n * root in a host-site-like shell (header / footer / sidebars) so local\n * development looks closer to the customer page the bundle is embedded in.\n *\n * Implementations live behind an `import.meta.env.DEV` guard inside the\n * client package so they tree-shake out of the production UMD.\n */\nexport interface DevEnvironment {\n /**\n * Called by `client.tsx` after the bundle loads but before `createRoot`,\n * in dev mode only. Free to mutate the DOM around `rootElement` (move it,\n * inject siblings, append <style>/<link>, etc.).\n *\n * Return `{ mountElement }` to redirect React to a different node;\n * otherwise React mounts on the original `rootElement`.\n */\n setup(args: { rootElement: HTMLElement }): { mountElement: HTMLElement } | void;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client bundle loader (DL #088 D3.3, lifted from `web50-server-ui`).
|
|
3
|
+
*
|
|
4
|
+
* Injects a client UMD `<script>` tag at the given URL, exposes the running
|
|
5
|
+
* `web5-core` instance as `window.Web5Core` so the bundle shares React-context
|
|
6
|
+
* instances with the host, and resolves with whatever the bundle attached to
|
|
7
|
+
* `window.W5ClientPackage`.
|
|
8
|
+
*
|
|
9
|
+
* Generic over the module shape — callers know what their specific bundle
|
|
10
|
+
* exports, and this primitive intentionally doesn't enforce a schema. The
|
|
11
|
+
* full app extends with rich `ClientPackageModule` / `ClientPackage` types
|
|
12
|
+
* locally; placement-style consumers only need `createDefaultRegistry` from
|
|
13
|
+
* the resolved object.
|
|
14
|
+
*/
|
|
15
|
+
import * as React from 'react';
|
|
16
|
+
import * as ReactDOM from 'react-dom';
|
|
17
|
+
import * as Web5Core from '../index.js';
|
|
18
|
+
const W5_CLIENT_PACKAGE_GLOBAL = 'W5ClientPackage';
|
|
19
|
+
const WEB5_CORE_GLOBAL = 'Web5Core';
|
|
20
|
+
const REACT_GLOBAL = 'React';
|
|
21
|
+
const REACT_DOM_GLOBAL = 'ReactDOM';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Subset of an HTMLScriptElement used by this module. Lets tests substitute a
|
|
25
|
+
* plain object with `onload` / `onerror` setters rather than spinning up a DOM.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
function defaultInject(src) {
|
|
29
|
+
const script = document.createElement('script');
|
|
30
|
+
script.src = src;
|
|
31
|
+
document.head.appendChild(script);
|
|
32
|
+
return script;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Inject a client UMD bundle's `<script>` tag, expose the running `web5-core`
|
|
37
|
+
* instance as `globalThis.Web5Core` for shared React contexts, and resolve
|
|
38
|
+
* with the module the bundle attached to `globalThis.W5ClientPackage`.
|
|
39
|
+
*
|
|
40
|
+
* @param bundleUrl - The CDN URL of the client UMD. Typically comes from
|
|
41
|
+
* `Configuration.bundleUrl` (DL #075) or a route-specific override.
|
|
42
|
+
* @param opts - Optional test hooks for DOM-less environments.
|
|
43
|
+
*/
|
|
44
|
+
export async function loadClientBundle(bundleUrl, opts) {
|
|
45
|
+
if (opts === void 0) {
|
|
46
|
+
opts = {};
|
|
47
|
+
}
|
|
48
|
+
const global = opts.globalRef ?? globalThis;
|
|
49
|
+
const inject = opts.injectScript ?? defaultInject;
|
|
50
|
+
|
|
51
|
+
// Expose the running web5-core instance so the UMD bundle shares the same
|
|
52
|
+
// React-context instances instead of creating duplicates inside its own
|
|
53
|
+
// import scope. Same shared-global trick web50-server-ui has used since DL #056.
|
|
54
|
+
global[WEB5_CORE_GLOBAL] = Web5Core;
|
|
55
|
+
// The client UMD lists `react` and `react-dom` as externals (see
|
|
56
|
+
// packages/web5-core/scripts/vite-cdn-config.ts) and expects `window.React`
|
|
57
|
+
// and `window.ReactDOM`. embed-placement bundles its own React inside the
|
|
58
|
+
// widget IIFE — without these assignments the UMD evaluates against
|
|
59
|
+
// `undefined` and ReactDOM throws on `__SECRET_INTERNALS_DO_NOT_USE_…`.
|
|
60
|
+
global[REACT_GLOBAL] ??= React;
|
|
61
|
+
global[REACT_DOM_GLOBAL] ??= ReactDOM;
|
|
62
|
+
|
|
63
|
+
// NOTE: client bundles MUST be IIFEs, not UMD — Wix Thunderbolt host pages
|
|
64
|
+
// ship RequireJS, whose global `define.amd` makes a UMD wrapper register as
|
|
65
|
+
// an anonymous AMD module instead of assigning `window.W5ClientPackage`
|
|
66
|
+
// (observed as a blank app on demoweb5cr.com). The format is enforced at
|
|
67
|
+
// build time by `scripts/vite-cdn-config.ts`; this loader deliberately does
|
|
68
|
+
// NOT touch `window.define` at runtime.
|
|
69
|
+
return new Promise((resolve, reject) => {
|
|
70
|
+
const script = inject(bundleUrl);
|
|
71
|
+
script.onload = () => {
|
|
72
|
+
const mod = global[W5_CLIENT_PACKAGE_GLOBAL];
|
|
73
|
+
if (!mod) {
|
|
74
|
+
reject(new Error(`[Web5] Bundle at ${bundleUrl} did not expose window.${W5_CLIENT_PACKAGE_GLOBAL}`));
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
resolve(mod);
|
|
78
|
+
};
|
|
79
|
+
script.onerror = () => reject(new Error(`[Web5] Failed to load client bundle from ${bundleUrl}`));
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=loadClientBundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","ReactDOM","Web5Core","W5_CLIENT_PACKAGE_GLOBAL","WEB5_CORE_GLOBAL","REACT_GLOBAL","REACT_DOM_GLOBAL","defaultInject","src","script","document","createElement","head","appendChild","loadClientBundle","bundleUrl","opts","global","globalRef","globalThis","inject","injectScript","Promise","resolve","reject","onload","mod","Error","onerror"],"sources":["../../../src/client/loadClientBundle.ts"],"sourcesContent":["/**\n * Client bundle loader (DL #088 D3.3, lifted from `web50-server-ui`).\n *\n * Injects a client UMD `<script>` tag at the given URL, exposes the running\n * `web5-core` instance as `window.Web5Core` so the bundle shares React-context\n * instances with the host, and resolves with whatever the bundle attached to\n * `window.W5ClientPackage`.\n *\n * Generic over the module shape — callers know what their specific bundle\n * exports, and this primitive intentionally doesn't enforce a schema. The\n * full app extends with rich `ClientPackageModule` / `ClientPackage` types\n * locally; placement-style consumers only need `createDefaultRegistry` from\n * the resolved object.\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as Web5Core from '../index';\n\nconst W5_CLIENT_PACKAGE_GLOBAL = 'W5ClientPackage';\nconst WEB5_CORE_GLOBAL = 'Web5Core';\nconst REACT_GLOBAL = 'React';\nconst REACT_DOM_GLOBAL = 'ReactDOM';\n\n/**\n * Subset of an HTMLScriptElement used by this module. Lets tests substitute a\n * plain object with `onload` / `onerror` setters rather than spinning up a DOM.\n */\nexport interface ScriptHandle {\n onload: ((ev?: unknown) => void) | null;\n onerror: ((ev?: unknown) => void) | null;\n}\n\ntype ScriptInjector = (src: string) => ScriptHandle;\n\nexport interface LoadClientBundleOptions {\n /** Test hook — inject the `<script>` via a custom function. */\n injectScript?: ScriptInjector;\n /** Test hook — read/write the bundle + core globals on this object instead of `globalThis`. */\n globalRef?: Record<string, unknown>;\n}\n\nfunction defaultInject(src: string): ScriptHandle {\n const script = document.createElement('script');\n script.src = src;\n document.head.appendChild(script);\n return script as ScriptHandle;\n}\n\n/**\n * Inject a client UMD bundle's `<script>` tag, expose the running `web5-core`\n * instance as `globalThis.Web5Core` for shared React contexts, and resolve\n * with the module the bundle attached to `globalThis.W5ClientPackage`.\n *\n * @param bundleUrl - The CDN URL of the client UMD. Typically comes from\n * `Configuration.bundleUrl` (DL #075) or a route-specific override.\n * @param opts - Optional test hooks for DOM-less environments.\n */\nexport async function loadClientBundle<T>(\n bundleUrl: string,\n opts: LoadClientBundleOptions = {},\n): Promise<T> {\n const global = opts.globalRef ?? (globalThis as unknown as Record<string, unknown>);\n const inject = opts.injectScript ?? defaultInject;\n\n // Expose the running web5-core instance so the UMD bundle shares the same\n // React-context instances instead of creating duplicates inside its own\n // import scope. Same shared-global trick web50-server-ui has used since DL #056.\n global[WEB5_CORE_GLOBAL] = Web5Core;\n // The client UMD lists `react` and `react-dom` as externals (see\n // packages/web5-core/scripts/vite-cdn-config.ts) and expects `window.React`\n // and `window.ReactDOM`. embed-placement bundles its own React inside the\n // widget IIFE — without these assignments the UMD evaluates against\n // `undefined` and ReactDOM throws on `__SECRET_INTERNALS_DO_NOT_USE_…`.\n global[REACT_GLOBAL] ??= React;\n global[REACT_DOM_GLOBAL] ??= ReactDOM;\n\n // NOTE: client bundles MUST be IIFEs, not UMD — Wix Thunderbolt host pages\n // ship RequireJS, whose global `define.amd` makes a UMD wrapper register as\n // an anonymous AMD module instead of assigning `window.W5ClientPackage`\n // (observed as a blank app on demoweb5cr.com). The format is enforced at\n // build time by `scripts/vite-cdn-config.ts`; this loader deliberately does\n // NOT touch `window.define` at runtime.\n return new Promise<T>((resolve, reject) => {\n const script = inject(bundleUrl);\n script.onload = () => {\n const mod = global[W5_CLIENT_PACKAGE_GLOBAL] as T | undefined;\n if (!mod) {\n reject(\n new Error(\n `[Web5] Bundle at ${bundleUrl} did not expose window.${W5_CLIENT_PACKAGE_GLOBAL}`,\n ),\n );\n return;\n }\n resolve(mod);\n };\n script.onerror = () =>\n reject(new Error(`[Web5] Failed to load client bundle from ${bundleUrl}`));\n });\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAO,KAAKC,QAAQ,MAAM,WAAW;AACrC,OAAO,KAAKC,QAAQ,MAAM,UAAU;AAEpC,MAAMC,wBAAwB,GAAG,iBAAiB;AAClD,MAAMC,gBAAgB,GAAG,UAAU;AACnC,MAAMC,YAAY,GAAG,OAAO;AAC5B,MAAMC,gBAAgB,GAAG,UAAU;;AAEnC;AACA;AACA;AACA;;AAeA,SAASC,aAAaA,CAACC,GAAW,EAAgB;EAChD,MAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,QAAQ,CAAC;EAC/CF,MAAM,CAACD,GAAG,GAAGA,GAAG;EAChBE,QAAQ,CAACE,IAAI,CAACC,WAAW,CAACJ,MAAM,CAAC;EACjC,OAAOA,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeK,gBAAgBA,CACpCC,SAAiB,EACjBC,IAA6B,EACjB;EAAA,IADZA,IAA6B;IAA7BA,IAA6B,GAAG,CAAC,CAAC;EAAA;EAElC,MAAMC,MAAM,GAAGD,IAAI,CAACE,SAAS,IAAKC,UAAiD;EACnF,MAAMC,MAAM,GAAGJ,IAAI,CAACK,YAAY,IAAId,aAAa;;EAEjD;EACA;EACA;EACAU,MAAM,CAACb,gBAAgB,CAAC,GAAGF,QAAQ;EACnC;EACA;EACA;EACA;EACA;EACAe,MAAM,CAACZ,YAAY,CAAC,KAAKL,KAAK;EAC9BiB,MAAM,CAACX,gBAAgB,CAAC,KAAKL,QAAQ;;EAErC;EACA;EACA;EACA;EACA;EACA;EACA,OAAO,IAAIqB,OAAO,CAAI,CAACC,OAAO,EAAEC,MAAM,KAAK;IACzC,MAAMf,MAAM,GAAGW,MAAM,CAACL,SAAS,CAAC;IAChCN,MAAM,CAACgB,MAAM,GAAG,MAAM;MACpB,MAAMC,GAAG,GAAGT,MAAM,CAACd,wBAAwB,CAAkB;MAC7D,IAAI,CAACuB,GAAG,EAAE;QACRF,MAAM,CACJ,IAAIG,KAAK,CACP,oBAAoBZ,SAAS,0BAA0BZ,wBAAwB,EACjF,CACF,CAAC;QACD;MACF;MACAoB,OAAO,CAACG,GAAG,CAAC;IACd,CAAC;IACDjB,MAAM,CAACmB,OAAO,GAAG,MACfJ,MAAM,CAAC,IAAIG,KAAK,CAAC,4CAA4CZ,SAAS,EAAE,CAAC,CAAC;EAC9E,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wix-authenticated `fetch` for Web5 BE calls from a host (third-party) origin.
|
|
3
|
+
*
|
|
4
|
+
* `wixapis.com`'s `/wix-assistant-web5/v1/conversation` endpoint refuses
|
|
5
|
+
* cross-origin anonymous calls (HTTP 500) — the only auth path that survives
|
|
6
|
+
* CORS from a host (e.g. Shopify) origin is `@wix/sdk`'s `OAuthStrategy`, which
|
|
7
|
+
* supplies the `Authorization` header the BE allowlists.
|
|
8
|
+
*
|
|
9
|
+
* Shared by every embed bundle that talks to the conversation endpoint — the
|
|
10
|
+
* placement bundle and the input-widget chip generator — so they all attach
|
|
11
|
+
* the same token. Token caching uses the same `localStorage` key format
|
|
12
|
+
* (`web5_tokens_<clientId>`) as `web50-server-ui`'s token cache, so the loader,
|
|
13
|
+
* full app, placement, and input widget share one OAuth token instead of each
|
|
14
|
+
* burning a `/oauth2/token` round-trip per page load.
|
|
15
|
+
*/
|
|
16
|
+
import { createClient, OAuthStrategy } from '@wix/sdk';
|
|
17
|
+
const TOKEN_CACHE_KEY_PREFIX = 'web5_tokens_';
|
|
18
|
+
function tokenKey(clientId) {
|
|
19
|
+
return `${TOKEN_CACHE_KEY_PREFIX}${clientId}`;
|
|
20
|
+
}
|
|
21
|
+
function loadTokens(client, clientId) {
|
|
22
|
+
try {
|
|
23
|
+
const raw = localStorage.getItem(tokenKey(clientId));
|
|
24
|
+
if (!raw) return;
|
|
25
|
+
client.auth.setTokens(JSON.parse(raw));
|
|
26
|
+
} catch {
|
|
27
|
+
try {
|
|
28
|
+
localStorage.removeItem(tokenKey(clientId));
|
|
29
|
+
} catch {
|
|
30
|
+
/* ignore */
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function saveTokens(client, clientId) {
|
|
35
|
+
try {
|
|
36
|
+
localStorage.setItem(tokenKey(clientId), JSON.stringify(client.auth.getTokens()));
|
|
37
|
+
} catch {
|
|
38
|
+
// privacy mode / quota — in-memory token still works for this session
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Build a `fetch`-shaped function pre-bound to the given Wix client id. The
|
|
44
|
+
* returned value is drop-in compatible with any `fetchImpl` option
|
|
45
|
+
* (`placementFetch`, `fetchContextualChips`, …).
|
|
46
|
+
*
|
|
47
|
+
* Each call loads cached tokens before the request, then saves the (possibly
|
|
48
|
+
* refreshed) tokens after the response headers arrive — we deliberately do NOT
|
|
49
|
+
* wait for the streaming body; the SDK's refresh runs alongside the stream and
|
|
50
|
+
* the saved tokens benefit subsequent calls.
|
|
51
|
+
*/
|
|
52
|
+
export function createWixAuthFetch(clientId) {
|
|
53
|
+
if (!clientId) {
|
|
54
|
+
throw new Error('[web5-core] createWixAuthFetch: clientId is empty');
|
|
55
|
+
}
|
|
56
|
+
const client = createClient({
|
|
57
|
+
auth: OAuthStrategy({
|
|
58
|
+
clientId
|
|
59
|
+
})
|
|
60
|
+
});
|
|
61
|
+
return async (input, init) => {
|
|
62
|
+
loadTokens(client, clientId);
|
|
63
|
+
const res = await client.fetchWithAuth(input, init);
|
|
64
|
+
saveTokens(client, clientId);
|
|
65
|
+
return res;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=wixAuthFetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createClient","OAuthStrategy","TOKEN_CACHE_KEY_PREFIX","tokenKey","clientId","loadTokens","client","raw","localStorage","getItem","auth","setTokens","JSON","parse","removeItem","saveTokens","setItem","stringify","getTokens","createWixAuthFetch","Error","input","init","res","fetchWithAuth"],"sources":["../../../src/client/wixAuthFetch.ts"],"sourcesContent":["/**\n * Wix-authenticated `fetch` for Web5 BE calls from a host (third-party) origin.\n *\n * `wixapis.com`'s `/wix-assistant-web5/v1/conversation` endpoint refuses\n * cross-origin anonymous calls (HTTP 500) — the only auth path that survives\n * CORS from a host (e.g. Shopify) origin is `@wix/sdk`'s `OAuthStrategy`, which\n * supplies the `Authorization` header the BE allowlists.\n *\n * Shared by every embed bundle that talks to the conversation endpoint — the\n * placement bundle and the input-widget chip generator — so they all attach\n * the same token. Token caching uses the same `localStorage` key format\n * (`web5_tokens_<clientId>`) as `web50-server-ui`'s token cache, so the loader,\n * full app, placement, and input widget share one OAuth token instead of each\n * burning a `/oauth2/token` round-trip per page load.\n */\nimport { createClient, OAuthStrategy } from '@wix/sdk';\n\nconst TOKEN_CACHE_KEY_PREFIX = 'web5_tokens_';\n\ninterface SdkClient {\n fetchWithAuth: typeof fetch;\n auth: {\n setTokens: (tokens: unknown) => void;\n getTokens: () => unknown;\n };\n}\n\nfunction tokenKey(clientId: string): string {\n return `${TOKEN_CACHE_KEY_PREFIX}${clientId}`;\n}\n\nfunction loadTokens(client: SdkClient, clientId: string): void {\n try {\n const raw = localStorage.getItem(tokenKey(clientId));\n if (!raw) return;\n client.auth.setTokens(JSON.parse(raw));\n } catch {\n try {\n localStorage.removeItem(tokenKey(clientId));\n } catch {\n /* ignore */\n }\n }\n}\n\nfunction saveTokens(client: SdkClient, clientId: string): void {\n try {\n localStorage.setItem(\n tokenKey(clientId),\n JSON.stringify(client.auth.getTokens()),\n );\n } catch {\n // privacy mode / quota — in-memory token still works for this session\n }\n}\n\n/**\n * Build a `fetch`-shaped function pre-bound to the given Wix client id. The\n * returned value is drop-in compatible with any `fetchImpl` option\n * (`placementFetch`, `fetchContextualChips`, …).\n *\n * Each call loads cached tokens before the request, then saves the (possibly\n * refreshed) tokens after the response headers arrive — we deliberately do NOT\n * wait for the streaming body; the SDK's refresh runs alongside the stream and\n * the saved tokens benefit subsequent calls.\n */\nexport function createWixAuthFetch(clientId: string): typeof fetch {\n if (!clientId) {\n throw new Error('[web5-core] createWixAuthFetch: clientId is empty');\n }\n const client = createClient({\n auth: OAuthStrategy({ clientId }),\n }) as unknown as SdkClient;\n\n return (async (input: RequestInfo | URL, init?: RequestInit) => {\n loadTokens(client, clientId);\n const res = await client.fetchWithAuth(input, init);\n saveTokens(client, clientId);\n return res;\n }) as typeof fetch;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,YAAY,EAAEC,aAAa,QAAQ,UAAU;AAEtD,MAAMC,sBAAsB,GAAG,cAAc;AAU7C,SAASC,QAAQA,CAACC,QAAgB,EAAU;EAC1C,OAAO,GAAGF,sBAAsB,GAAGE,QAAQ,EAAE;AAC/C;AAEA,SAASC,UAAUA,CAACC,MAAiB,EAAEF,QAAgB,EAAQ;EAC7D,IAAI;IACF,MAAMG,GAAG,GAAGC,YAAY,CAACC,OAAO,CAACN,QAAQ,CAACC,QAAQ,CAAC,CAAC;IACpD,IAAI,CAACG,GAAG,EAAE;IACVD,MAAM,CAACI,IAAI,CAACC,SAAS,CAACC,IAAI,CAACC,KAAK,CAACN,GAAG,CAAC,CAAC;EACxC,CAAC,CAAC,MAAM;IACN,IAAI;MACFC,YAAY,CAACM,UAAU,CAACX,QAAQ,CAACC,QAAQ,CAAC,CAAC;IAC7C,CAAC,CAAC,MAAM;MACN;IAAA;EAEJ;AACF;AAEA,SAASW,UAAUA,CAACT,MAAiB,EAAEF,QAAgB,EAAQ;EAC7D,IAAI;IACFI,YAAY,CAACQ,OAAO,CAClBb,QAAQ,CAACC,QAAQ,CAAC,EAClBQ,IAAI,CAACK,SAAS,CAACX,MAAM,CAACI,IAAI,CAACQ,SAAS,CAAC,CAAC,CACxC,CAAC;EACH,CAAC,CAAC,MAAM;IACN;EAAA;AAEJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACf,QAAgB,EAAgB;EACjE,IAAI,CAACA,QAAQ,EAAE;IACb,MAAM,IAAIgB,KAAK,CAAC,mDAAmD,CAAC;EACtE;EACA,MAAMd,MAAM,GAAGN,YAAY,CAAC;IAC1BU,IAAI,EAAET,aAAa,CAAC;MAAEG;IAAS,CAAC;EAClC,CAAC,CAAyB;EAE1B,OAAQ,OAAOiB,KAAwB,EAAEC,IAAkB,KAAK;IAC9DjB,UAAU,CAACC,MAAM,EAAEF,QAAQ,CAAC;IAC5B,MAAMmB,GAAG,GAAG,MAAMjB,MAAM,CAACkB,aAAa,CAACH,KAAK,EAAEC,IAAI,CAAC;IACnDP,UAAU,CAACT,MAAM,EAAEF,QAAQ,CAAC;IAC5B,OAAOmB,GAAG;EACZ,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const CLIENT_IDS = {
|
|
2
|
+
CIRCANA_DEMO: '9efd0d80-5661-4497-8267-76a2bb075d80',
|
|
3
|
+
CIRCANA_PROD: '976944ca-fead-4d31-94db-2b3ac4c55ad5',
|
|
4
|
+
FEATURE_COM: '9ed0cd73-31e2-48f6-83cd-df96267a8471'
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
/** Petri / Conductor experiment IDs evaluated in the `web5-embed` scope. */
|
|
8
|
+
export const EXPERIMENT_IDS = {
|
|
9
|
+
WEB5_CUSTOM: 'web5Custom'
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=clients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CLIENT_IDS","CIRCANA_DEMO","CIRCANA_PROD","FEATURE_COM","EXPERIMENT_IDS","WEB5_CUSTOM"],"sources":["../../src/clients.ts"],"sourcesContent":["export const CLIENT_IDS = {\n CIRCANA_DEMO: '9efd0d80-5661-4497-8267-76a2bb075d80',\n CIRCANA_PROD: '976944ca-fead-4d31-94db-2b3ac4c55ad5',\n FEATURE_COM: '9ed0cd73-31e2-48f6-83cd-df96267a8471',\n} as const;\n\n/** Petri / Conductor experiment IDs evaluated in the `web5-embed` scope. */\nexport const EXPERIMENT_IDS = {\n WEB5_CUSTOM: 'web5Custom',\n} as const;\n"],"mappings":"AAAA,OAAO,MAAMA,UAAU,GAAG;EACxBC,YAAY,EAAE,sCAAsC;EACpDC,YAAY,EAAE,sCAAsC;EACpDC,WAAW,EAAE;AACf,CAAU;;AAEV;AACA,OAAO,MAAMC,cAAc,GAAG;EAC5BC,WAAW,EAAE;AACf,CAAU","ignoreList":[]}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export function rgbToHsl(_ref) {
|
|
2
|
+
let [r, g, b] = _ref;
|
|
3
|
+
r /= 255;
|
|
4
|
+
g /= 255;
|
|
5
|
+
b /= 255;
|
|
6
|
+
const max = Math.max(r, g, b),
|
|
7
|
+
min = Math.min(r, g, b);
|
|
8
|
+
let h = 0,
|
|
9
|
+
s = 0;
|
|
10
|
+
const l = (max + min) / 2;
|
|
11
|
+
if (max !== min) {
|
|
12
|
+
const d = max - min;
|
|
13
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
14
|
+
if (max === r) {
|
|
15
|
+
h = ((g - b) / d + (g < b ? 6 : 0)) / 6;
|
|
16
|
+
} else if (max === g) {
|
|
17
|
+
h = ((b - r) / d + 2) / 6;
|
|
18
|
+
} else {
|
|
19
|
+
h = ((r - g) / d + 4) / 6;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return [h * 360, s * 100, l * 100];
|
|
23
|
+
}
|
|
24
|
+
export function hslToRgb(_ref2) {
|
|
25
|
+
let [h, s, l] = _ref2;
|
|
26
|
+
h /= 360;
|
|
27
|
+
s /= 100;
|
|
28
|
+
l /= 100;
|
|
29
|
+
if (s === 0) {
|
|
30
|
+
const v = Math.round(l * 255);
|
|
31
|
+
return [v, v, v];
|
|
32
|
+
}
|
|
33
|
+
const hue2rgb = (p, q, t) => {
|
|
34
|
+
if (t < 0) {
|
|
35
|
+
t += 1;
|
|
36
|
+
}
|
|
37
|
+
if (t > 1) {
|
|
38
|
+
t -= 1;
|
|
39
|
+
}
|
|
40
|
+
if (t < 1 / 6) {
|
|
41
|
+
return p + (q - p) * 6 * t;
|
|
42
|
+
}
|
|
43
|
+
if (t < 1 / 2) {
|
|
44
|
+
return q;
|
|
45
|
+
}
|
|
46
|
+
if (t < 2 / 3) {
|
|
47
|
+
return p + (q - p) * (2 / 3 - t) * 6;
|
|
48
|
+
}
|
|
49
|
+
return p;
|
|
50
|
+
};
|
|
51
|
+
const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
|
|
52
|
+
const p = 2 * l - q;
|
|
53
|
+
return [Math.round(hue2rgb(p, q, h + 1 / 3) * 255), Math.round(hue2rgb(p, q, h) * 255), Math.round(hue2rgb(p, q, h - 1 / 3) * 255)];
|
|
54
|
+
}
|
|
55
|
+
export function ensureMinLightness(rgb, minL) {
|
|
56
|
+
const [h, s, l] = rgbToHsl(rgb);
|
|
57
|
+
if (l >= minL) {
|
|
58
|
+
return rgb;
|
|
59
|
+
}
|
|
60
|
+
return hslToRgb([h, s, minL]);
|
|
61
|
+
}
|
|
62
|
+
export function toRgb(c) {
|
|
63
|
+
return `rgb(${c[0]}, ${c[1]}, ${c[2]})`;
|
|
64
|
+
}
|
|
65
|
+
export function deriveDarkColor(palette, minDarkness) {
|
|
66
|
+
if (!palette.length) {
|
|
67
|
+
return [0, 0, 0];
|
|
68
|
+
}
|
|
69
|
+
let darkest = palette[0];
|
|
70
|
+
let lowestL = rgbToHsl(palette[0])[2];
|
|
71
|
+
for (let i = 1; i < palette.length; i++) {
|
|
72
|
+
const l = rgbToHsl(palette[i])[2];
|
|
73
|
+
if (l < lowestL) {
|
|
74
|
+
lowestL = l;
|
|
75
|
+
darkest = palette[i];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const [h, s, l] = rgbToHsl(darkest);
|
|
79
|
+
const maxLightness = 100 - minDarkness;
|
|
80
|
+
if (l <= maxLightness) {
|
|
81
|
+
return darkest;
|
|
82
|
+
}
|
|
83
|
+
return hslToRgb([h, s, maxLightness]);
|
|
84
|
+
}
|
|
85
|
+
export function deriveDarkGradient(palette, minDarkness) {
|
|
86
|
+
if (!palette.length) {
|
|
87
|
+
return ['rgb(0, 0, 0)', 'rgb(0, 0, 0)'];
|
|
88
|
+
}
|
|
89
|
+
const sorted = [...palette].sort((a, b) => rgbToHsl(a)[2] - rgbToHsl(b)[2]);
|
|
90
|
+
const maxLightness = 100 - minDarkness;
|
|
91
|
+
const enforce = rgb => {
|
|
92
|
+
const [h, s, l] = rgbToHsl(rgb);
|
|
93
|
+
return l <= maxLightness ? rgb : hslToRgb([h, s, maxLightness]);
|
|
94
|
+
};
|
|
95
|
+
const stop1 = enforce(sorted[0]);
|
|
96
|
+
const stop2 = enforce(sorted.length > 1 ? sorted[1] : sorted[0]);
|
|
97
|
+
return [toRgb(stop1), toRgb(stop2)];
|
|
98
|
+
}
|
|
99
|
+
export function deriveLightColor(palette, minLightness) {
|
|
100
|
+
if (!palette.length) {
|
|
101
|
+
return [240, 240, 240];
|
|
102
|
+
}
|
|
103
|
+
let lightest = palette[0];
|
|
104
|
+
let highestL = rgbToHsl(palette[0])[2];
|
|
105
|
+
for (let i = 1; i < palette.length; i++) {
|
|
106
|
+
const l = rgbToHsl(palette[i])[2];
|
|
107
|
+
if (l > highestL) {
|
|
108
|
+
highestL = l;
|
|
109
|
+
lightest = palette[i];
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const [h, s, l] = rgbToHsl(lightest);
|
|
113
|
+
if (l >= minLightness) {
|
|
114
|
+
return lightest;
|
|
115
|
+
}
|
|
116
|
+
return hslToRgb([h, s, minLightness]);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=colorUtils.js.map
|