@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.
Files changed (947) hide show
  1. package/README.md +8 -0
  2. package/dist/cjs/client/clientBundleOverride.js +48 -0
  3. package/dist/cjs/client/clientBundleOverride.js.map +1 -0
  4. package/dist/cjs/client/devEnvironment.js +4 -0
  5. package/dist/cjs/client/devEnvironment.js.map +1 -0
  6. package/dist/cjs/client/loadClientBundle.js +85 -0
  7. package/dist/cjs/client/loadClientBundle.js.map +1 -0
  8. package/dist/cjs/client/wixAuthFetch.js +73 -0
  9. package/dist/cjs/client/wixAuthFetch.js.map +1 -0
  10. package/dist/cjs/clients.js +15 -0
  11. package/dist/cjs/clients.js.map +1 -0
  12. package/dist/cjs/color/colorUtils.js +126 -0
  13. package/dist/cjs/color/colorUtils.js.map +1 -0
  14. package/dist/cjs/component/componentDefinitions/CalloutSectionDefinition.js +67 -0
  15. package/dist/cjs/component/componentDefinitions/CalloutSectionDefinition.js.map +1 -0
  16. package/dist/cjs/component/componentDefinitions/ComparisonSectionDefinition.js +141 -0
  17. package/dist/cjs/component/componentDefinitions/ComparisonSectionDefinition.js.map +1 -0
  18. package/dist/cjs/component/componentDefinitions/CtaBannerSectionDefinition.js +85 -0
  19. package/dist/cjs/component/componentDefinitions/CtaBannerSectionDefinition.js.map +1 -0
  20. package/dist/cjs/component/componentDefinitions/EntitySectionDefinition.js +171 -0
  21. package/dist/cjs/component/componentDefinitions/EntitySectionDefinition.js.map +1 -0
  22. package/dist/cjs/component/componentDefinitions/ErrorSectionDefinition.js +81 -0
  23. package/dist/cjs/component/componentDefinitions/ErrorSectionDefinition.js.map +1 -0
  24. package/dist/cjs/component/componentDefinitions/FallbackSectionDefinition.js +29 -0
  25. package/dist/cjs/component/componentDefinitions/FallbackSectionDefinition.js.map +1 -0
  26. package/dist/cjs/component/componentDefinitions/FeatureCardsSectionDefinition.js +119 -0
  27. package/dist/cjs/component/componentDefinitions/FeatureCardsSectionDefinition.js.map +1 -0
  28. package/dist/cjs/component/componentDefinitions/FeatureSection9PlusDefinition.js +75 -0
  29. package/dist/cjs/component/componentDefinitions/FeatureSection9PlusDefinition.js.map +1 -0
  30. package/dist/cjs/component/componentDefinitions/HeroEntitySectionDefinition.js +124 -0
  31. package/dist/cjs/component/componentDefinitions/HeroEntitySectionDefinition.js.map +1 -0
  32. package/dist/cjs/component/componentDefinitions/HeroSectionDefinition.js +209 -0
  33. package/dist/cjs/component/componentDefinitions/HeroSectionDefinition.js.map +1 -0
  34. package/dist/cjs/component/componentDefinitions/HtmlCommentSectionDefinition.js +19 -0
  35. package/dist/cjs/component/componentDefinitions/HtmlCommentSectionDefinition.js.map +1 -0
  36. package/dist/cjs/component/componentDefinitions/KpiSectionDefinition.js +114 -0
  37. package/dist/cjs/component/componentDefinitions/KpiSectionDefinition.js.map +1 -0
  38. package/dist/cjs/component/componentDefinitions/NextStepsSectionDefinition.js +136 -0
  39. package/dist/cjs/component/componentDefinitions/NextStepsSectionDefinition.js.map +1 -0
  40. package/dist/cjs/component/componentDefinitions/SearchSectionDefinition.js +18 -0
  41. package/dist/cjs/component/componentDefinitions/SearchSectionDefinition.js.map +1 -0
  42. package/dist/cjs/component/componentDefinitions/SkipNodesSectionDefinition.js +20 -0
  43. package/dist/cjs/component/componentDefinitions/SkipNodesSectionDefinition.js.map +1 -0
  44. package/dist/cjs/component/componentDefinitions/TextBlockSectionDefinition.js +65 -0
  45. package/dist/cjs/component/componentDefinitions/TextBlockSectionDefinition.js.map +1 -0
  46. package/dist/cjs/component/componentDefinitions/index.js +48 -0
  47. package/dist/cjs/component/componentDefinitions/index.js.map +1 -0
  48. package/dist/cjs/component/componentDefinitions/listItemsSectionDefinition.js +86 -0
  49. package/dist/cjs/component/componentDefinitions/listItemsSectionDefinition.js.map +1 -0
  50. package/dist/cjs/component/componentDefinitions/parse-utils.js +434 -0
  51. package/dist/cjs/component/componentDefinitions/parse-utils.js.map +1 -0
  52. package/dist/cjs/component/componentDefinitions/specHelpers.js +36 -0
  53. package/dist/cjs/component/componentDefinitions/specHelpers.js.map +1 -0
  54. package/dist/cjs/component/componentParser.js +365 -0
  55. package/dist/cjs/component/componentParser.js.map +1 -0
  56. package/dist/cjs/component/diagnosticTypes.js +30 -0
  57. package/dist/cjs/component/diagnosticTypes.js.map +1 -0
  58. package/dist/cjs/component/parser-types.js +4 -0
  59. package/dist/cjs/component/parser-types.js.map +1 -0
  60. package/dist/cjs/component/section-definition.js +4 -0
  61. package/dist/cjs/component/section-definition.js.map +1 -0
  62. package/dist/cjs/component/types.js +4 -0
  63. package/dist/cjs/component/types.js.map +1 -0
  64. package/dist/cjs/components/placement/PlacementPayloadContext.js +29 -0
  65. package/dist/cjs/components/placement/PlacementPayloadContext.js.map +1 -0
  66. package/dist/cjs/components/placement/PlacementResponseRenderer.css +269 -0
  67. package/dist/cjs/components/placement/PlacementResponseRenderer.js +259 -0
  68. package/dist/cjs/components/placement/PlacementResponseRenderer.js.map +1 -0
  69. package/dist/cjs/components/placement/buildPlacementDependencies.js +214 -0
  70. package/dist/cjs/components/placement/buildPlacementDependencies.js.map +1 -0
  71. package/dist/cjs/components/ui/BottomContainer.js +26 -0
  72. package/dist/cjs/components/ui/BottomContainer.js.map +1 -0
  73. package/dist/cjs/components/ui/CalloutBlock.js +156 -0
  74. package/dist/cjs/components/ui/CalloutBlock.js.map +1 -0
  75. package/dist/cjs/components/ui/Disclaimer.css +35 -0
  76. package/dist/cjs/components/ui/Disclaimer.js +56 -0
  77. package/dist/cjs/components/ui/Disclaimer.js.map +1 -0
  78. package/dist/cjs/components/ui/FeedbackBar.css +267 -0
  79. package/dist/cjs/components/ui/FeedbackBar.js +417 -0
  80. package/dist/cjs/components/ui/FeedbackBar.js.map +1 -0
  81. package/dist/cjs/components/ui/Loader.js +73 -0
  82. package/dist/cjs/components/ui/Loader.js.map +1 -0
  83. package/dist/cjs/components/ui/MarkdownText.js +419 -0
  84. package/dist/cjs/components/ui/MarkdownText.js.map +1 -0
  85. package/dist/cjs/components/ui/OptimizedImage.js +414 -0
  86. package/dist/cjs/components/ui/OptimizedImage.js.map +1 -0
  87. package/dist/cjs/components/ui/PlacementLoader.css +101 -0
  88. package/dist/cjs/components/ui/PlacementLoader.js +62 -0
  89. package/dist/cjs/components/ui/PlacementLoader.js.map +1 -0
  90. package/dist/cjs/components/ui/PromptEntryEmptyState.css +172 -0
  91. package/dist/cjs/components/ui/PromptEntryEmptyState.js +96 -0
  92. package/dist/cjs/components/ui/PromptEntryEmptyState.js.map +1 -0
  93. package/dist/cjs/components/ui/SearchSection.css +538 -0
  94. package/dist/cjs/components/ui/SearchSection.js +550 -0
  95. package/dist/cjs/components/ui/SearchSection.js.map +1 -0
  96. package/dist/cjs/components/ui/SectionSkeleton.css +109 -0
  97. package/dist/cjs/components/ui/SectionSkeleton.js +190 -0
  98. package/dist/cjs/components/ui/SectionSkeleton.js.map +1 -0
  99. package/dist/cjs/components/ui/SmartIcon.js +122 -0
  100. package/dist/cjs/components/ui/SmartIcon.js.map +1 -0
  101. package/dist/cjs/components/ui/UnifiedLink.js +169 -0
  102. package/dist/cjs/components/ui/UnifiedLink.js.map +1 -0
  103. package/dist/cjs/components/ui/UserQuery.js +348 -0
  104. package/dist/cjs/components/ui/UserQuery.js.map +1 -0
  105. package/dist/cjs/components/ui/icons/ArrowTopRightIcon.js +37 -0
  106. package/dist/cjs/components/ui/icons/ArrowTopRightIcon.js.map +1 -0
  107. package/dist/cjs/components/ui/icons/ArrowUpIcon.js +61 -0
  108. package/dist/cjs/components/ui/icons/ArrowUpIcon.js.map +1 -0
  109. package/dist/cjs/components/ui/icons/CheckIcon.js +37 -0
  110. package/dist/cjs/components/ui/icons/CheckIcon.js.map +1 -0
  111. package/dist/cjs/components/ui/icons/CommentIcon.js +34 -0
  112. package/dist/cjs/components/ui/icons/CommentIcon.js.map +1 -0
  113. package/dist/cjs/components/ui/icons/PlusIcon.js +51 -0
  114. package/dist/cjs/components/ui/icons/PlusIcon.js.map +1 -0
  115. package/dist/cjs/components/ui/icons/RedoIcon.js +51 -0
  116. package/dist/cjs/components/ui/icons/RedoIcon.js.map +1 -0
  117. package/dist/cjs/components/ui/icons/ShareIcon.js +81 -0
  118. package/dist/cjs/components/ui/icons/ShareIcon.js.map +1 -0
  119. package/dist/cjs/components/ui/icons/UndoIcon.js +51 -0
  120. package/dist/cjs/components/ui/icons/UndoIcon.js.map +1 -0
  121. package/dist/cjs/components/ui/table.js +159 -0
  122. package/dist/cjs/components/ui/table.js.map +1 -0
  123. package/dist/cjs/context/ChipsContext.js +12 -0
  124. package/dist/cjs/context/ChipsContext.js.map +1 -0
  125. package/dist/cjs/context/ComponentDependenciesContext.js +32 -0
  126. package/dist/cjs/context/ComponentDependenciesContext.js.map +1 -0
  127. package/dist/cjs/entity/defaultExtractor.js +117 -0
  128. package/dist/cjs/entity/defaultExtractor.js.map +1 -0
  129. package/dist/cjs/entity/enrichEntitiesFromPayload.js +39 -0
  130. package/dist/cjs/entity/enrichEntitiesFromPayload.js.map +1 -0
  131. package/dist/cjs/entity/fetchEntityListData.js +78 -0
  132. package/dist/cjs/entity/fetchEntityListData.js.map +1 -0
  133. package/dist/cjs/entity/index.js +41 -0
  134. package/dist/cjs/entity/index.js.map +1 -0
  135. package/dist/cjs/entity/types.js +4 -0
  136. package/dist/cjs/entity/types.js.map +1 -0
  137. package/dist/cjs/errors/conversationErrorTypes.js +56 -0
  138. package/dist/cjs/errors/conversationErrorTypes.js.map +1 -0
  139. package/dist/cjs/errors/errorTemplates.js +86 -0
  140. package/dist/cjs/errors/errorTemplates.js.map +1 -0
  141. package/dist/cjs/errors/index.js +13 -0
  142. package/dist/cjs/errors/index.js.map +1 -0
  143. package/dist/cjs/external-types.d.js +2 -0
  144. package/dist/cjs/external-types.d.js.map +1 -0
  145. package/dist/cjs/featureToggles/FeatureToggleContext.js +44 -0
  146. package/dist/cjs/featureToggles/FeatureToggleContext.js.map +1 -0
  147. package/dist/cjs/hooks/useConversation.js +10 -0
  148. package/dist/cjs/hooks/useConversation.js.map +1 -0
  149. package/dist/cjs/hooks/useDebugImageContext.js +10 -0
  150. package/dist/cjs/hooks/useDebugImageContext.js.map +1 -0
  151. package/dist/cjs/hooks/useEntityTransforms.js +10 -0
  152. package/dist/cjs/hooks/useEntityTransforms.js.map +1 -0
  153. package/dist/cjs/hooks/useMarkdownUtils.js +10 -0
  154. package/dist/cjs/hooks/useMarkdownUtils.js.map +1 -0
  155. package/dist/cjs/hooks/useResolveGenericEntityData.js +10 -0
  156. package/dist/cjs/hooks/useResolveGenericEntityData.js.map +1 -0
  157. package/dist/cjs/hooks/useResolveSearchSpringEntityData.js +146 -0
  158. package/dist/cjs/hooks/useResolveSearchSpringEntityData.js.map +1 -0
  159. package/dist/cjs/hooks/useResolveShopifyEntityData.js +190 -0
  160. package/dist/cjs/hooks/useResolveShopifyEntityData.js.map +1 -0
  161. package/dist/cjs/hooks/useResolvedImageSources.js +160 -0
  162. package/dist/cjs/hooks/useResolvedImageSources.js.map +1 -0
  163. package/dist/cjs/hooks/useWeb5Link.js +10 -0
  164. package/dist/cjs/hooks/useWeb5Link.js.map +1 -0
  165. package/dist/cjs/image/contextualImageTypes.js +4 -0
  166. package/dist/cjs/image/contextualImageTypes.js.map +1 -0
  167. package/dist/cjs/image/imageSearchFilterTypes.js +19 -0
  168. package/dist/cjs/image/imageSearchFilterTypes.js.map +1 -0
  169. package/dist/cjs/image/imageSearchFilters.js +22 -0
  170. package/dist/cjs/image/imageSearchFilters.js.map +1 -0
  171. package/dist/cjs/index.js +285 -0
  172. package/dist/cjs/index.js.map +1 -0
  173. package/dist/cjs/lib/utils.js +33 -0
  174. package/dist/cjs/lib/utils.js.map +1 -0
  175. package/dist/cjs/markdownBlocks.js +645 -0
  176. package/dist/cjs/markdownBlocks.js.map +1 -0
  177. package/dist/cjs/match/astToParts.js +374 -0
  178. package/dist/cjs/match/astToParts.js.map +1 -0
  179. package/dist/cjs/match/extractProps.js +654 -0
  180. package/dist/cjs/match/extractProps.js.map +1 -0
  181. package/dist/cjs/match/index.js +11 -0
  182. package/dist/cjs/match/index.js.map +1 -0
  183. package/dist/cjs/match/matchAllSections.js +34 -0
  184. package/dist/cjs/match/matchAllSections.js.map +1 -0
  185. package/dist/cjs/match/matchMarkdown.js +39 -0
  186. package/dist/cjs/match/matchMarkdown.js.map +1 -0
  187. package/dist/cjs/parts/parts.js +183 -0
  188. package/dist/cjs/parts/parts.js.map +1 -0
  189. package/dist/cjs/patternAnalyzer/conflictDetector.js +103 -0
  190. package/dist/cjs/patternAnalyzer/conflictDetector.js.map +1 -0
  191. package/dist/cjs/patternAnalyzer/index.js +40 -0
  192. package/dist/cjs/patternAnalyzer/index.js.map +1 -0
  193. package/dist/cjs/patternAnalyzer/markdownGenerator.js +347 -0
  194. package/dist/cjs/patternAnalyzer/markdownGenerator.js.map +1 -0
  195. package/dist/cjs/patternAnalyzer/mergeDetector.js +505 -0
  196. package/dist/cjs/patternAnalyzer/mergeDetector.js.map +1 -0
  197. package/dist/cjs/patternAnalyzer/parserValidator.js +56 -0
  198. package/dist/cjs/patternAnalyzer/parserValidator.js.map +1 -0
  199. package/dist/cjs/patternAnalyzer/patternWriter.js +106 -0
  200. package/dist/cjs/patternAnalyzer/patternWriter.js.map +1 -0
  201. package/dist/cjs/patternAnalyzer/run.js +140 -0
  202. package/dist/cjs/patternAnalyzer/run.js.map +1 -0
  203. package/dist/cjs/patternAnalyzer/types.js +4 -0
  204. package/dist/cjs/patternAnalyzer/types.js.map +1 -0
  205. package/dist/cjs/patternValidator/ERROR_MESSAGES.md +110 -0
  206. package/dist/cjs/patternValidator/README.md +757 -0
  207. package/dist/cjs/patternValidator/automaton.js +349 -0
  208. package/dist/cjs/patternValidator/automaton.js.map +1 -0
  209. package/dist/cjs/patternValidator/index.js +196 -0
  210. package/dist/cjs/patternValidator/index.js.map +1 -0
  211. package/dist/cjs/patternValidator/lexer.js +218 -0
  212. package/dist/cjs/patternValidator/lexer.js.map +1 -0
  213. package/dist/cjs/patternValidator/matcher.js +722 -0
  214. package/dist/cjs/patternValidator/matcher.js.map +1 -0
  215. package/dist/cjs/patternValidator/parser.js +533 -0
  216. package/dist/cjs/patternValidator/parser.js.map +1 -0
  217. package/dist/cjs/patternValidator/types.js +4 -0
  218. package/dist/cjs/patternValidator/types.js.map +1 -0
  219. package/dist/cjs/patternValidator/validator.test.js +1277 -0
  220. package/dist/cjs/patternValidator/validator.test.js.map +1 -0
  221. package/dist/cjs/registry/ComponentRegistry.js +438 -0
  222. package/dist/cjs/registry/ComponentRegistry.js.map +1 -0
  223. package/dist/cjs/registry/Intent.js +19 -0
  224. package/dist/cjs/registry/Intent.js.map +1 -0
  225. package/dist/cjs/registry/index.js +9 -0
  226. package/dist/cjs/registry/index.js.map +1 -0
  227. package/dist/cjs/registry/types.js +4 -0
  228. package/dist/cjs/registry/types.js.map +1 -0
  229. package/dist/cjs/services/cart/addToCart.js +147 -0
  230. package/dist/cjs/services/cart/addToCart.js.map +1 -0
  231. package/dist/cjs/services/cart/index.js +7 -0
  232. package/dist/cjs/services/cart/index.js.map +1 -0
  233. package/dist/cjs/services/searchspring/index.js +10 -0
  234. package/dist/cjs/services/searchspring/index.js.map +1 -0
  235. package/dist/cjs/services/searchspring/searchSpringClient.js +49 -0
  236. package/dist/cjs/services/searchspring/searchSpringClient.js.map +1 -0
  237. package/dist/cjs/services/searchspring/transformSSProduct.js +70 -0
  238. package/dist/cjs/services/searchspring/transformSSProduct.js.map +1 -0
  239. package/dist/cjs/services/searchspring/types.js +4 -0
  240. package/dist/cjs/services/searchspring/types.js.map +1 -0
  241. package/dist/cjs/services/shopify/globals.d.js +4 -0
  242. package/dist/cjs/services/shopify/globals.d.js.map +1 -0
  243. package/dist/cjs/services/shopify/index.js +22 -0
  244. package/dist/cjs/services/shopify/index.js.map +1 -0
  245. package/dist/cjs/services/shopify/queries.js +214 -0
  246. package/dist/cjs/services/shopify/queries.js.map +1 -0
  247. package/dist/cjs/services/shopify/resolveStoreDomain.js +28 -0
  248. package/dist/cjs/services/shopify/resolveStoreDomain.js.map +1 -0
  249. package/dist/cjs/services/shopify/shopifyEntityResolver.js +109 -0
  250. package/dist/cjs/services/shopify/shopifyEntityResolver.js.map +1 -0
  251. package/dist/cjs/services/shopify/shopifyStorefrontClient.js +58 -0
  252. package/dist/cjs/services/shopify/shopifyStorefrontClient.js.map +1 -0
  253. package/dist/cjs/services/shopify/transformShopifyEntity.js +137 -0
  254. package/dist/cjs/services/shopify/transformShopifyEntity.js.map +1 -0
  255. package/dist/cjs/services/shopify/types.js +4 -0
  256. package/dist/cjs/services/shopify/types.js.map +1 -0
  257. package/dist/cjs/styles/base-tokens.css +152 -0
  258. package/dist/cjs/styles/base-utilities.css +424 -0
  259. package/dist/cjs/styles/components.css +6 -0
  260. package/dist/cjs/styles/prompt-input-tokens.css +136 -0
  261. package/dist/cjs/styles/tailwind-theme.css +138 -0
  262. package/dist/cjs/test-types.d.js +2 -0
  263. package/dist/cjs/test-types.d.js.map +1 -0
  264. package/dist/cjs/testUtils.js +25 -0
  265. package/dist/cjs/testUtils.js.map +1 -0
  266. package/dist/cjs/types/answerUpdatedEvent.js +20 -0
  267. package/dist/cjs/types/answerUpdatedEvent.js.map +1 -0
  268. package/dist/cjs/types/blog.js +4 -0
  269. package/dist/cjs/types/blog.js.map +1 -0
  270. package/dist/cjs/types/callout.js +6 -0
  271. package/dist/cjs/types/callout.js.map +1 -0
  272. package/dist/cjs/types/dependencies.js +4 -0
  273. package/dist/cjs/types/dependencies.js.map +1 -0
  274. package/dist/cjs/types/entity.js +4 -0
  275. package/dist/cjs/types/entity.js.map +1 -0
  276. package/dist/cjs/types/link-types.js +62 -0
  277. package/dist/cjs/types/link-types.js.map +1 -0
  278. package/dist/cjs/types/page-section.js +4 -0
  279. package/dist/cjs/types/page-section.js.map +1 -0
  280. package/dist/cjs/types/placement.js +4 -0
  281. package/dist/cjs/types/placement.js.map +1 -0
  282. package/dist/cjs/types/redirectEvent.js +27 -0
  283. package/dist/cjs/types/redirectEvent.js.map +1 -0
  284. package/dist/cjs/types/userQueryEvent.js +19 -0
  285. package/dist/cjs/types/userQueryEvent.js.map +1 -0
  286. package/dist/cjs/utils/analyticsEvents.js +91 -0
  287. package/dist/cjs/utils/analyticsEvents.js.map +1 -0
  288. package/dist/cjs/utils/componentTracking.js +90 -0
  289. package/dist/cjs/utils/componentTracking.js.map +1 -0
  290. package/dist/cjs/utils/contentKeywordMatcher.js +56 -0
  291. package/dist/cjs/utils/contentKeywordMatcher.js.map +1 -0
  292. package/dist/cjs/utils/conversationApi.js +52 -0
  293. package/dist/cjs/utils/conversationApi.js.map +1 -0
  294. package/dist/cjs/utils/conversationMode.js +23 -0
  295. package/dist/cjs/utils/conversationMode.js.map +1 -0
  296. package/dist/cjs/utils/diagnosticsCollector.js +58 -0
  297. package/dist/cjs/utils/diagnosticsCollector.js.map +1 -0
  298. package/dist/cjs/utils/entityLinkParser.js +256 -0
  299. package/dist/cjs/utils/entityLinkParser.js.map +1 -0
  300. package/dist/cjs/utils/htmlCommentParser.js +122 -0
  301. package/dist/cjs/utils/htmlCommentParser.js.map +1 -0
  302. package/dist/cjs/utils/image-utils.js +49 -0
  303. package/dist/cjs/utils/image-utils.js.map +1 -0
  304. package/dist/cjs/utils/intentExtractor.js +47 -0
  305. package/dist/cjs/utils/intentExtractor.js.map +1 -0
  306. package/dist/cjs/utils/markdownPreprocessor.js +268 -0
  307. package/dist/cjs/utils/markdownPreprocessor.js.map +1 -0
  308. package/dist/cjs/utils/navigationStack.js +35 -0
  309. package/dist/cjs/utils/navigationStack.js.map +1 -0
  310. package/dist/cjs/utils/nodeMatchers.js +43 -0
  311. package/dist/cjs/utils/nodeMatchers.js.map +1 -0
  312. package/dist/cjs/utils/propsExtractor.js +66 -0
  313. package/dist/cjs/utils/propsExtractor.js.map +1 -0
  314. package/dist/cjs/utils/sessionManager.js +161 -0
  315. package/dist/cjs/utils/sessionManager.js.map +1 -0
  316. package/dist/cjs/utils/unifiedMarkdownParser.js +44 -0
  317. package/dist/cjs/utils/unifiedMarkdownParser.js.map +1 -0
  318. package/dist/cjs/utils/web5LinkValidator.js +56 -0
  319. package/dist/cjs/utils/web5LinkValidator.js.map +1 -0
  320. package/dist/cjs/utils/web5LinkValidator.test.js +115 -0
  321. package/dist/cjs/utils/web5LinkValidator.test.js.map +1 -0
  322. package/dist/esm/client/clientBundleOverride.js +43 -0
  323. package/dist/esm/client/clientBundleOverride.js.map +1 -0
  324. package/dist/esm/client/devEnvironment.js +2 -0
  325. package/dist/esm/client/devEnvironment.js.map +1 -0
  326. package/dist/esm/client/loadClientBundle.js +82 -0
  327. package/dist/esm/client/loadClientBundle.js.map +1 -0
  328. package/dist/esm/client/wixAuthFetch.js +68 -0
  329. package/dist/esm/client/wixAuthFetch.js.map +1 -0
  330. package/dist/esm/clients.js +11 -0
  331. package/dist/esm/clients.js.map +1 -0
  332. package/dist/esm/color/colorUtils.js +118 -0
  333. package/dist/esm/color/colorUtils.js.map +1 -0
  334. package/dist/esm/component/componentDefinitions/CalloutSectionDefinition.js +61 -0
  335. package/dist/esm/component/componentDefinitions/CalloutSectionDefinition.js.map +1 -0
  336. package/dist/esm/component/componentDefinitions/ComparisonSectionDefinition.js +135 -0
  337. package/dist/esm/component/componentDefinitions/ComparisonSectionDefinition.js.map +1 -0
  338. package/dist/esm/component/componentDefinitions/CtaBannerSectionDefinition.js +79 -0
  339. package/dist/esm/component/componentDefinitions/CtaBannerSectionDefinition.js.map +1 -0
  340. package/dist/esm/component/componentDefinitions/EntitySectionDefinition.js +165 -0
  341. package/dist/esm/component/componentDefinitions/EntitySectionDefinition.js.map +1 -0
  342. package/dist/esm/component/componentDefinitions/ErrorSectionDefinition.js +75 -0
  343. package/dist/esm/component/componentDefinitions/ErrorSectionDefinition.js.map +1 -0
  344. package/dist/esm/component/componentDefinitions/FallbackSectionDefinition.js +23 -0
  345. package/dist/esm/component/componentDefinitions/FallbackSectionDefinition.js.map +1 -0
  346. package/dist/esm/component/componentDefinitions/FeatureCardsSectionDefinition.js +113 -0
  347. package/dist/esm/component/componentDefinitions/FeatureCardsSectionDefinition.js.map +1 -0
  348. package/dist/esm/component/componentDefinitions/FeatureSection9PlusDefinition.js +69 -0
  349. package/dist/esm/component/componentDefinitions/FeatureSection9PlusDefinition.js.map +1 -0
  350. package/dist/esm/component/componentDefinitions/HeroEntitySectionDefinition.js +119 -0
  351. package/dist/esm/component/componentDefinitions/HeroEntitySectionDefinition.js.map +1 -0
  352. package/dist/esm/component/componentDefinitions/HeroSectionDefinition.js +203 -0
  353. package/dist/esm/component/componentDefinitions/HeroSectionDefinition.js.map +1 -0
  354. package/dist/esm/component/componentDefinitions/HtmlCommentSectionDefinition.js +13 -0
  355. package/dist/esm/component/componentDefinitions/HtmlCommentSectionDefinition.js.map +1 -0
  356. package/dist/esm/component/componentDefinitions/KpiSectionDefinition.js +108 -0
  357. package/dist/esm/component/componentDefinitions/KpiSectionDefinition.js.map +1 -0
  358. package/dist/esm/component/componentDefinitions/NextStepsSectionDefinition.js +130 -0
  359. package/dist/esm/component/componentDefinitions/NextStepsSectionDefinition.js.map +1 -0
  360. package/dist/esm/component/componentDefinitions/SearchSectionDefinition.js +12 -0
  361. package/dist/esm/component/componentDefinitions/SearchSectionDefinition.js.map +1 -0
  362. package/dist/esm/component/componentDefinitions/SkipNodesSectionDefinition.js +14 -0
  363. package/dist/esm/component/componentDefinitions/SkipNodesSectionDefinition.js.map +1 -0
  364. package/dist/esm/component/componentDefinitions/TextBlockSectionDefinition.js +59 -0
  365. package/dist/esm/component/componentDefinitions/TextBlockSectionDefinition.js.map +1 -0
  366. package/dist/esm/component/componentDefinitions/index.js +45 -0
  367. package/dist/esm/component/componentDefinitions/index.js.map +1 -0
  368. package/dist/esm/component/componentDefinitions/listItemsSectionDefinition.js +80 -0
  369. package/dist/esm/component/componentDefinitions/listItemsSectionDefinition.js.map +1 -0
  370. package/dist/esm/component/componentDefinitions/parse-utils.js +412 -0
  371. package/dist/esm/component/componentDefinitions/parse-utils.js.map +1 -0
  372. package/dist/esm/component/componentDefinitions/specHelpers.js +31 -0
  373. package/dist/esm/component/componentDefinitions/specHelpers.js.map +1 -0
  374. package/dist/esm/component/componentParser.js +358 -0
  375. package/dist/esm/component/componentParser.js.map +1 -0
  376. package/dist/esm/component/diagnosticTypes.js +26 -0
  377. package/dist/esm/component/diagnosticTypes.js.map +1 -0
  378. package/dist/esm/component/parser-types.js +2 -0
  379. package/dist/esm/component/parser-types.js.map +1 -0
  380. package/dist/esm/component/section-definition.js +2 -0
  381. package/dist/esm/component/section-definition.js.map +1 -0
  382. package/dist/esm/component/types.js +2 -0
  383. package/dist/esm/component/types.js.map +1 -0
  384. package/dist/esm/components/placement/PlacementPayloadContext.js +24 -0
  385. package/dist/esm/components/placement/PlacementPayloadContext.js.map +1 -0
  386. package/dist/esm/components/placement/PlacementResponseRenderer.css +269 -0
  387. package/dist/esm/components/placement/PlacementResponseRenderer.js +173 -0
  388. package/dist/esm/components/placement/PlacementResponseRenderer.js.map +1 -0
  389. package/dist/esm/components/placement/buildPlacementDependencies.js +212 -0
  390. package/dist/esm/components/placement/buildPlacementDependencies.js.map +1 -0
  391. package/dist/esm/components/ui/BottomContainer.js +14 -0
  392. package/dist/esm/components/ui/BottomContainer.js.map +1 -0
  393. package/dist/esm/components/ui/CalloutBlock.js +118 -0
  394. package/dist/esm/components/ui/CalloutBlock.js.map +1 -0
  395. package/dist/esm/components/ui/Disclaimer.css +35 -0
  396. package/dist/esm/components/ui/Disclaimer.js +32 -0
  397. package/dist/esm/components/ui/Disclaimer.js.map +1 -0
  398. package/dist/esm/components/ui/FeedbackBar.css +267 -0
  399. package/dist/esm/components/ui/FeedbackBar.js +221 -0
  400. package/dist/esm/components/ui/FeedbackBar.js.map +1 -0
  401. package/dist/esm/components/ui/Loader.js +43 -0
  402. package/dist/esm/components/ui/Loader.js.map +1 -0
  403. package/dist/esm/components/ui/MarkdownText.js +283 -0
  404. package/dist/esm/components/ui/MarkdownText.js.map +1 -0
  405. package/dist/esm/components/ui/OptimizedImage.js +354 -0
  406. package/dist/esm/components/ui/OptimizedImage.js.map +1 -0
  407. package/dist/esm/components/ui/PlacementLoader.css +101 -0
  408. package/dist/esm/components/ui/PlacementLoader.js +28 -0
  409. package/dist/esm/components/ui/PlacementLoader.js.map +1 -0
  410. package/dist/esm/components/ui/PromptEntryEmptyState.css +172 -0
  411. package/dist/esm/components/ui/PromptEntryEmptyState.js +36 -0
  412. package/dist/esm/components/ui/PromptEntryEmptyState.js.map +1 -0
  413. package/dist/esm/components/ui/SearchSection.css +538 -0
  414. package/dist/esm/components/ui/SearchSection.js +317 -0
  415. package/dist/esm/components/ui/SearchSection.js.map +1 -0
  416. package/dist/esm/components/ui/SectionSkeleton.css +109 -0
  417. package/dist/esm/components/ui/SectionSkeleton.js +100 -0
  418. package/dist/esm/components/ui/SectionSkeleton.js.map +1 -0
  419. package/dist/esm/components/ui/SmartIcon.js +91 -0
  420. package/dist/esm/components/ui/SmartIcon.js.map +1 -0
  421. package/dist/esm/components/ui/UnifiedLink.js +105 -0
  422. package/dist/esm/components/ui/UnifiedLink.js.map +1 -0
  423. package/dist/esm/components/ui/UserQuery.js +167 -0
  424. package/dist/esm/components/ui/UserQuery.js.map +1 -0
  425. package/dist/esm/components/ui/icons/ArrowTopRightIcon.js +17 -0
  426. package/dist/esm/components/ui/icons/ArrowTopRightIcon.js.map +1 -0
  427. package/dist/esm/components/ui/icons/ArrowUpIcon.js +29 -0
  428. package/dist/esm/components/ui/icons/ArrowUpIcon.js.map +1 -0
  429. package/dist/esm/components/ui/icons/CheckIcon.js +17 -0
  430. package/dist/esm/components/ui/icons/CheckIcon.js.map +1 -0
  431. package/dist/esm/components/ui/icons/CommentIcon.js +15 -0
  432. package/dist/esm/components/ui/icons/CommentIcon.js.map +1 -0
  433. package/dist/esm/components/ui/icons/PlusIcon.js +25 -0
  434. package/dist/esm/components/ui/icons/PlusIcon.js.map +1 -0
  435. package/dist/esm/components/ui/icons/RedoIcon.js +25 -0
  436. package/dist/esm/components/ui/icons/RedoIcon.js.map +1 -0
  437. package/dist/esm/components/ui/icons/ShareIcon.js +37 -0
  438. package/dist/esm/components/ui/icons/ShareIcon.js.map +1 -0
  439. package/dist/esm/components/ui/icons/UndoIcon.js +25 -0
  440. package/dist/esm/components/ui/icons/UndoIcon.js.map +1 -0
  441. package/dist/esm/components/ui/table.js +92 -0
  442. package/dist/esm/components/ui/table.js.map +1 -0
  443. package/dist/esm/context/ChipsContext.js +7 -0
  444. package/dist/esm/context/ChipsContext.js.map +1 -0
  445. package/dist/esm/context/ComponentDependenciesContext.js +19 -0
  446. package/dist/esm/context/ComponentDependenciesContext.js.map +1 -0
  447. package/dist/esm/entity/defaultExtractor.js +111 -0
  448. package/dist/esm/entity/defaultExtractor.js.map +1 -0
  449. package/dist/esm/entity/enrichEntitiesFromPayload.js +35 -0
  450. package/dist/esm/entity/enrichEntitiesFromPayload.js.map +1 -0
  451. package/dist/esm/entity/fetchEntityListData.js +76 -0
  452. package/dist/esm/entity/fetchEntityListData.js.map +1 -0
  453. package/dist/esm/entity/index.js +29 -0
  454. package/dist/esm/entity/index.js.map +1 -0
  455. package/dist/esm/entity/types.js +2 -0
  456. package/dist/esm/entity/types.js.map +1 -0
  457. package/dist/esm/errors/conversationErrorTypes.js +50 -0
  458. package/dist/esm/errors/conversationErrorTypes.js.map +1 -0
  459. package/dist/esm/errors/errorTemplates.js +81 -0
  460. package/dist/esm/errors/errorTemplates.js.map +1 -0
  461. package/dist/esm/errors/index.js +3 -0
  462. package/dist/esm/errors/index.js.map +1 -0
  463. package/dist/esm/external-types.d.js +2 -0
  464. package/dist/esm/external-types.d.js.map +1 -0
  465. package/dist/esm/featureToggles/FeatureToggleContext.js +30 -0
  466. package/dist/esm/featureToggles/FeatureToggleContext.js.map +1 -0
  467. package/dist/esm/hooks/useConversation.js +6 -0
  468. package/dist/esm/hooks/useConversation.js.map +1 -0
  469. package/dist/esm/hooks/useDebugImageContext.js +6 -0
  470. package/dist/esm/hooks/useDebugImageContext.js.map +1 -0
  471. package/dist/esm/hooks/useEntityTransforms.js +6 -0
  472. package/dist/esm/hooks/useEntityTransforms.js.map +1 -0
  473. package/dist/esm/hooks/useMarkdownUtils.js +6 -0
  474. package/dist/esm/hooks/useMarkdownUtils.js.map +1 -0
  475. package/dist/esm/hooks/useResolveGenericEntityData.js +6 -0
  476. package/dist/esm/hooks/useResolveGenericEntityData.js.map +1 -0
  477. package/dist/esm/hooks/useResolveSearchSpringEntityData.js +146 -0
  478. package/dist/esm/hooks/useResolveSearchSpringEntityData.js.map +1 -0
  479. package/dist/esm/hooks/useResolveShopifyEntityData.js +191 -0
  480. package/dist/esm/hooks/useResolveShopifyEntityData.js.map +1 -0
  481. package/dist/esm/hooks/useResolvedImageSources.js +169 -0
  482. package/dist/esm/hooks/useResolvedImageSources.js.map +1 -0
  483. package/dist/esm/hooks/useWeb5Link.js +6 -0
  484. package/dist/esm/hooks/useWeb5Link.js.map +1 -0
  485. package/dist/esm/image/contextualImageTypes.js +2 -0
  486. package/dist/esm/image/contextualImageTypes.js.map +1 -0
  487. package/dist/esm/image/imageSearchFilterTypes.js +15 -0
  488. package/dist/esm/image/imageSearchFilterTypes.js.map +1 -0
  489. package/dist/esm/image/imageSearchFilters.js +18 -0
  490. package/dist/esm/image/imageSearchFilters.js.map +1 -0
  491. package/dist/esm/index.js +152 -0
  492. package/dist/esm/index.js.map +1 -0
  493. package/dist/esm/lib/utils.js +33 -0
  494. package/dist/esm/lib/utils.js.map +1 -0
  495. package/dist/esm/markdownBlocks.js +641 -0
  496. package/dist/esm/markdownBlocks.js.map +1 -0
  497. package/dist/esm/match/astToParts.js +371 -0
  498. package/dist/esm/match/astToParts.js.map +1 -0
  499. package/dist/esm/match/extractProps.js +634 -0
  500. package/dist/esm/match/extractProps.js.map +1 -0
  501. package/dist/esm/match/index.js +4 -0
  502. package/dist/esm/match/index.js.map +1 -0
  503. package/dist/esm/match/matchAllSections.js +31 -0
  504. package/dist/esm/match/matchAllSections.js.map +1 -0
  505. package/dist/esm/match/matchMarkdown.js +36 -0
  506. package/dist/esm/match/matchMarkdown.js.map +1 -0
  507. package/dist/esm/parts/parts.js +171 -0
  508. package/dist/esm/parts/parts.js.map +1 -0
  509. package/dist/esm/patternAnalyzer/conflictDetector.js +99 -0
  510. package/dist/esm/patternAnalyzer/conflictDetector.js.map +1 -0
  511. package/dist/esm/patternAnalyzer/index.js +36 -0
  512. package/dist/esm/patternAnalyzer/index.js.map +1 -0
  513. package/dist/esm/patternAnalyzer/markdownGenerator.js +344 -0
  514. package/dist/esm/patternAnalyzer/markdownGenerator.js.map +1 -0
  515. package/dist/esm/patternAnalyzer/mergeDetector.js +504 -0
  516. package/dist/esm/patternAnalyzer/mergeDetector.js.map +1 -0
  517. package/dist/esm/patternAnalyzer/parserValidator.js +52 -0
  518. package/dist/esm/patternAnalyzer/parserValidator.js.map +1 -0
  519. package/dist/esm/patternAnalyzer/patternWriter.js +102 -0
  520. package/dist/esm/patternAnalyzer/patternWriter.js.map +1 -0
  521. package/dist/esm/patternAnalyzer/run.js +138 -0
  522. package/dist/esm/patternAnalyzer/run.js.map +1 -0
  523. package/dist/esm/patternAnalyzer/types.js +2 -0
  524. package/dist/esm/patternAnalyzer/types.js.map +1 -0
  525. package/dist/esm/patternValidator/ERROR_MESSAGES.md +110 -0
  526. package/dist/esm/patternValidator/README.md +757 -0
  527. package/dist/esm/patternValidator/automaton.js +345 -0
  528. package/dist/esm/patternValidator/automaton.js.map +1 -0
  529. package/dist/esm/patternValidator/index.js +190 -0
  530. package/dist/esm/patternValidator/index.js.map +1 -0
  531. package/dist/esm/patternValidator/lexer.js +214 -0
  532. package/dist/esm/patternValidator/lexer.js.map +1 -0
  533. package/dist/esm/patternValidator/matcher.js +717 -0
  534. package/dist/esm/patternValidator/matcher.js.map +1 -0
  535. package/dist/esm/patternValidator/parser.js +531 -0
  536. package/dist/esm/patternValidator/parser.js.map +1 -0
  537. package/dist/esm/patternValidator/types.js +2 -0
  538. package/dist/esm/patternValidator/types.js.map +1 -0
  539. package/dist/esm/patternValidator/validator.test.js +1275 -0
  540. package/dist/esm/patternValidator/validator.test.js.map +1 -0
  541. package/dist/esm/registry/ComponentRegistry.js +435 -0
  542. package/dist/esm/registry/ComponentRegistry.js.map +1 -0
  543. package/dist/esm/registry/Intent.js +15 -0
  544. package/dist/esm/registry/Intent.js.map +1 -0
  545. package/dist/esm/registry/index.js +3 -0
  546. package/dist/esm/registry/index.js.map +1 -0
  547. package/dist/esm/registry/types.js +2 -0
  548. package/dist/esm/registry/types.js.map +1 -0
  549. package/dist/esm/services/cart/addToCart.js +146 -0
  550. package/dist/esm/services/cart/addToCart.js.map +1 -0
  551. package/dist/esm/services/cart/index.js +2 -0
  552. package/dist/esm/services/cart/index.js.map +1 -0
  553. package/dist/esm/services/searchspring/index.js +3 -0
  554. package/dist/esm/services/searchspring/index.js.map +1 -0
  555. package/dist/esm/services/searchspring/searchSpringClient.js +44 -0
  556. package/dist/esm/services/searchspring/searchSpringClient.js.map +1 -0
  557. package/dist/esm/services/searchspring/transformSSProduct.js +66 -0
  558. package/dist/esm/services/searchspring/transformSSProduct.js.map +1 -0
  559. package/dist/esm/services/searchspring/types.js +2 -0
  560. package/dist/esm/services/searchspring/types.js.map +1 -0
  561. package/dist/esm/services/shopify/globals.d.js +7 -0
  562. package/dist/esm/services/shopify/globals.d.js.map +1 -0
  563. package/dist/esm/services/shopify/index.js +6 -0
  564. package/dist/esm/services/shopify/index.js.map +1 -0
  565. package/dist/esm/services/shopify/queries.js +210 -0
  566. package/dist/esm/services/shopify/queries.js.map +1 -0
  567. package/dist/esm/services/shopify/resolveStoreDomain.js +25 -0
  568. package/dist/esm/services/shopify/resolveStoreDomain.js.map +1 -0
  569. package/dist/esm/services/shopify/shopifyEntityResolver.js +105 -0
  570. package/dist/esm/services/shopify/shopifyEntityResolver.js.map +1 -0
  571. package/dist/esm/services/shopify/shopifyStorefrontClient.js +52 -0
  572. package/dist/esm/services/shopify/shopifyStorefrontClient.js.map +1 -0
  573. package/dist/esm/services/shopify/transformShopifyEntity.js +130 -0
  574. package/dist/esm/services/shopify/transformShopifyEntity.js.map +1 -0
  575. package/dist/esm/services/shopify/types.js +2 -0
  576. package/dist/esm/services/shopify/types.js.map +1 -0
  577. package/dist/esm/styles/base-tokens.css +152 -0
  578. package/dist/esm/styles/base-utilities.css +424 -0
  579. package/dist/esm/styles/components.css +6 -0
  580. package/dist/esm/styles/prompt-input-tokens.css +136 -0
  581. package/dist/esm/styles/tailwind-theme.css +138 -0
  582. package/dist/esm/test-types.d.js +2 -0
  583. package/dist/esm/test-types.d.js.map +1 -0
  584. package/dist/esm/testUtils.js +20 -0
  585. package/dist/esm/testUtils.js.map +1 -0
  586. package/dist/esm/types/answerUpdatedEvent.js +16 -0
  587. package/dist/esm/types/answerUpdatedEvent.js.map +1 -0
  588. package/dist/esm/types/blog.js +2 -0
  589. package/dist/esm/types/blog.js.map +1 -0
  590. package/dist/esm/types/callout.js +2 -0
  591. package/dist/esm/types/callout.js.map +1 -0
  592. package/dist/esm/types/dependencies.js +2 -0
  593. package/dist/esm/types/dependencies.js.map +1 -0
  594. package/dist/esm/types/entity.js +2 -0
  595. package/dist/esm/types/entity.js.map +1 -0
  596. package/dist/esm/types/link-types.js +52 -0
  597. package/dist/esm/types/link-types.js.map +1 -0
  598. package/dist/esm/types/page-section.js +2 -0
  599. package/dist/esm/types/page-section.js.map +1 -0
  600. package/dist/esm/types/placement.js +2 -0
  601. package/dist/esm/types/placement.js.map +1 -0
  602. package/dist/esm/types/redirectEvent.js +23 -0
  603. package/dist/esm/types/redirectEvent.js.map +1 -0
  604. package/dist/esm/types/userQueryEvent.js +15 -0
  605. package/dist/esm/types/userQueryEvent.js.map +1 -0
  606. package/dist/esm/utils/analyticsEvents.js +84 -0
  607. package/dist/esm/utils/analyticsEvents.js.map +1 -0
  608. package/dist/esm/utils/componentTracking.js +84 -0
  609. package/dist/esm/utils/componentTracking.js.map +1 -0
  610. package/dist/esm/utils/contentKeywordMatcher.js +50 -0
  611. package/dist/esm/utils/contentKeywordMatcher.js.map +1 -0
  612. package/dist/esm/utils/conversationApi.js +45 -0
  613. package/dist/esm/utils/conversationApi.js.map +1 -0
  614. package/dist/esm/utils/conversationMode.js +18 -0
  615. package/dist/esm/utils/conversationMode.js.map +1 -0
  616. package/dist/esm/utils/diagnosticsCollector.js +52 -0
  617. package/dist/esm/utils/diagnosticsCollector.js.map +1 -0
  618. package/dist/esm/utils/entityLinkParser.js +246 -0
  619. package/dist/esm/utils/entityLinkParser.js.map +1 -0
  620. package/dist/esm/utils/htmlCommentParser.js +117 -0
  621. package/dist/esm/utils/htmlCommentParser.js.map +1 -0
  622. package/dist/esm/utils/image-utils.js +45 -0
  623. package/dist/esm/utils/image-utils.js.map +1 -0
  624. package/dist/esm/utils/intentExtractor.js +45 -0
  625. package/dist/esm/utils/intentExtractor.js.map +1 -0
  626. package/dist/esm/utils/markdownPreprocessor.js +257 -0
  627. package/dist/esm/utils/markdownPreprocessor.js.map +1 -0
  628. package/dist/esm/utils/navigationStack.js +27 -0
  629. package/dist/esm/utils/navigationStack.js.map +1 -0
  630. package/dist/esm/utils/nodeMatchers.js +38 -0
  631. package/dist/esm/utils/nodeMatchers.js.map +1 -0
  632. package/dist/esm/utils/propsExtractor.js +58 -0
  633. package/dist/esm/utils/propsExtractor.js.map +1 -0
  634. package/dist/esm/utils/sessionManager.js +151 -0
  635. package/dist/esm/utils/sessionManager.js.map +1 -0
  636. package/dist/esm/utils/unifiedMarkdownParser.js +36 -0
  637. package/dist/esm/utils/unifiedMarkdownParser.js.map +1 -0
  638. package/dist/esm/utils/web5LinkValidator.js +52 -0
  639. package/dist/esm/utils/web5LinkValidator.js.map +1 -0
  640. package/dist/esm/utils/web5LinkValidator.test.js +113 -0
  641. package/dist/esm/utils/web5LinkValidator.test.js.map +1 -0
  642. package/dist/types/client/clientBundleOverride.d.ts +26 -0
  643. package/dist/types/client/clientBundleOverride.d.ts.map +1 -0
  644. package/dist/types/client/devEnvironment.d.ts +24 -0
  645. package/dist/types/client/devEnvironment.d.ts.map +1 -0
  646. package/dist/types/client/loadClientBundle.d.ts +27 -0
  647. package/dist/types/client/loadClientBundle.d.ts.map +1 -0
  648. package/dist/types/client/wixAuthFetch.d.ts +12 -0
  649. package/dist/types/client/wixAuthFetch.d.ts.map +1 -0
  650. package/dist/types/clients.d.ts +10 -0
  651. package/dist/types/clients.d.ts.map +1 -0
  652. package/dist/types/color/colorUtils.d.ts +9 -0
  653. package/dist/types/color/colorUtils.d.ts.map +1 -0
  654. package/dist/types/component/componentDefinitions/CalloutSectionDefinition.d.ts +11 -0
  655. package/dist/types/component/componentDefinitions/CalloutSectionDefinition.d.ts.map +1 -0
  656. package/dist/types/component/componentDefinitions/ComparisonSectionDefinition.d.ts +11 -0
  657. package/dist/types/component/componentDefinitions/ComparisonSectionDefinition.d.ts.map +1 -0
  658. package/dist/types/component/componentDefinitions/CtaBannerSectionDefinition.d.ts +11 -0
  659. package/dist/types/component/componentDefinitions/CtaBannerSectionDefinition.d.ts.map +1 -0
  660. package/dist/types/component/componentDefinitions/EntitySectionDefinition.d.ts +11 -0
  661. package/dist/types/component/componentDefinitions/EntitySectionDefinition.d.ts.map +1 -0
  662. package/dist/types/component/componentDefinitions/ErrorSectionDefinition.d.ts +12 -0
  663. package/dist/types/component/componentDefinitions/ErrorSectionDefinition.d.ts.map +1 -0
  664. package/dist/types/component/componentDefinitions/FallbackSectionDefinition.d.ts +16 -0
  665. package/dist/types/component/componentDefinitions/FallbackSectionDefinition.d.ts.map +1 -0
  666. package/dist/types/component/componentDefinitions/FeatureCardsSectionDefinition.d.ts +11 -0
  667. package/dist/types/component/componentDefinitions/FeatureCardsSectionDefinition.d.ts.map +1 -0
  668. package/dist/types/component/componentDefinitions/FeatureSection9PlusDefinition.d.ts +11 -0
  669. package/dist/types/component/componentDefinitions/FeatureSection9PlusDefinition.d.ts.map +1 -0
  670. package/dist/types/component/componentDefinitions/HeroEntitySectionDefinition.d.ts +23 -0
  671. package/dist/types/component/componentDefinitions/HeroEntitySectionDefinition.d.ts.map +1 -0
  672. package/dist/types/component/componentDefinitions/HeroSectionDefinition.d.ts +12 -0
  673. package/dist/types/component/componentDefinitions/HeroSectionDefinition.d.ts.map +1 -0
  674. package/dist/types/component/componentDefinitions/HtmlCommentSectionDefinition.d.ts +11 -0
  675. package/dist/types/component/componentDefinitions/HtmlCommentSectionDefinition.d.ts.map +1 -0
  676. package/dist/types/component/componentDefinitions/KpiSectionDefinition.d.ts +11 -0
  677. package/dist/types/component/componentDefinitions/KpiSectionDefinition.d.ts.map +1 -0
  678. package/dist/types/component/componentDefinitions/NextStepsSectionDefinition.d.ts +11 -0
  679. package/dist/types/component/componentDefinitions/NextStepsSectionDefinition.d.ts.map +1 -0
  680. package/dist/types/component/componentDefinitions/SearchSectionDefinition.d.ts +10 -0
  681. package/dist/types/component/componentDefinitions/SearchSectionDefinition.d.ts.map +1 -0
  682. package/dist/types/component/componentDefinitions/SkipNodesSectionDefinition.d.ts +12 -0
  683. package/dist/types/component/componentDefinitions/SkipNodesSectionDefinition.d.ts.map +1 -0
  684. package/dist/types/component/componentDefinitions/TextBlockSectionDefinition.d.ts +11 -0
  685. package/dist/types/component/componentDefinitions/TextBlockSectionDefinition.d.ts.map +1 -0
  686. package/dist/types/component/componentDefinitions/index.d.ts +26 -0
  687. package/dist/types/component/componentDefinitions/index.d.ts.map +1 -0
  688. package/dist/types/component/componentDefinitions/listItemsSectionDefinition.d.ts +11 -0
  689. package/dist/types/component/componentDefinitions/listItemsSectionDefinition.d.ts.map +1 -0
  690. package/dist/types/component/componentDefinitions/parse-utils.d.ts +88 -0
  691. package/dist/types/component/componentDefinitions/parse-utils.d.ts.map +1 -0
  692. package/dist/types/component/componentDefinitions/specHelpers.d.ts +16 -0
  693. package/dist/types/component/componentDefinitions/specHelpers.d.ts.map +1 -0
  694. package/dist/types/component/componentParser.d.ts +63 -0
  695. package/dist/types/component/componentParser.d.ts.map +1 -0
  696. package/dist/types/component/diagnosticTypes.d.ts +23 -0
  697. package/dist/types/component/diagnosticTypes.d.ts.map +1 -0
  698. package/dist/types/component/parser-types.d.ts +71 -0
  699. package/dist/types/component/parser-types.d.ts.map +1 -0
  700. package/dist/types/component/section-definition.d.ts +32 -0
  701. package/dist/types/component/section-definition.d.ts.map +1 -0
  702. package/dist/types/component/types.d.ts +315 -0
  703. package/dist/types/component/types.d.ts.map +1 -0
  704. package/dist/types/components/placement/PlacementPayloadContext.d.ts +20 -0
  705. package/dist/types/components/placement/PlacementPayloadContext.d.ts.map +1 -0
  706. package/dist/types/components/placement/PlacementResponseRenderer.d.ts +106 -0
  707. package/dist/types/components/placement/PlacementResponseRenderer.d.ts.map +1 -0
  708. package/dist/types/components/placement/buildPlacementDependencies.d.ts +44 -0
  709. package/dist/types/components/placement/buildPlacementDependencies.d.ts.map +1 -0
  710. package/dist/types/components/ui/BottomContainer.d.ts +9 -0
  711. package/dist/types/components/ui/BottomContainer.d.ts.map +1 -0
  712. package/dist/types/components/ui/CalloutBlock.d.ts +9 -0
  713. package/dist/types/components/ui/CalloutBlock.d.ts.map +1 -0
  714. package/dist/types/components/ui/Disclaimer.d.ts +21 -0
  715. package/dist/types/components/ui/Disclaimer.d.ts.map +1 -0
  716. package/dist/types/components/ui/FeedbackBar.d.ts +41 -0
  717. package/dist/types/components/ui/FeedbackBar.d.ts.map +1 -0
  718. package/dist/types/components/ui/Loader.d.ts +9 -0
  719. package/dist/types/components/ui/Loader.d.ts.map +1 -0
  720. package/dist/types/components/ui/MarkdownText.d.ts +9 -0
  721. package/dist/types/components/ui/MarkdownText.d.ts.map +1 -0
  722. package/dist/types/components/ui/OptimizedImage.d.ts +59 -0
  723. package/dist/types/components/ui/OptimizedImage.d.ts.map +1 -0
  724. package/dist/types/components/ui/PlacementLoader.d.ts +15 -0
  725. package/dist/types/components/ui/PlacementLoader.d.ts.map +1 -0
  726. package/dist/types/components/ui/PromptEntryEmptyState.d.ts +21 -0
  727. package/dist/types/components/ui/PromptEntryEmptyState.d.ts.map +1 -0
  728. package/dist/types/components/ui/SearchSection.d.ts +37 -0
  729. package/dist/types/components/ui/SearchSection.d.ts.map +1 -0
  730. package/dist/types/components/ui/SectionSkeleton.d.ts +27 -0
  731. package/dist/types/components/ui/SectionSkeleton.d.ts.map +1 -0
  732. package/dist/types/components/ui/SmartIcon.d.ts +19 -0
  733. package/dist/types/components/ui/SmartIcon.d.ts.map +1 -0
  734. package/dist/types/components/ui/UnifiedLink.d.ts +22 -0
  735. package/dist/types/components/ui/UnifiedLink.d.ts.map +1 -0
  736. package/dist/types/components/ui/UserQuery.d.ts +33 -0
  737. package/dist/types/components/ui/UserQuery.d.ts.map +1 -0
  738. package/dist/types/components/ui/icons/ArrowTopRightIcon.d.ts +3 -0
  739. package/dist/types/components/ui/icons/ArrowTopRightIcon.d.ts.map +1 -0
  740. package/dist/types/components/ui/icons/ArrowUpIcon.d.ts +3 -0
  741. package/dist/types/components/ui/icons/ArrowUpIcon.d.ts.map +1 -0
  742. package/dist/types/components/ui/icons/CheckIcon.d.ts +3 -0
  743. package/dist/types/components/ui/icons/CheckIcon.d.ts.map +1 -0
  744. package/dist/types/components/ui/icons/CommentIcon.d.ts +3 -0
  745. package/dist/types/components/ui/icons/CommentIcon.d.ts.map +1 -0
  746. package/dist/types/components/ui/icons/PlusIcon.d.ts +3 -0
  747. package/dist/types/components/ui/icons/PlusIcon.d.ts.map +1 -0
  748. package/dist/types/components/ui/icons/RedoIcon.d.ts +3 -0
  749. package/dist/types/components/ui/icons/RedoIcon.d.ts.map +1 -0
  750. package/dist/types/components/ui/icons/ShareIcon.d.ts +3 -0
  751. package/dist/types/components/ui/icons/ShareIcon.d.ts.map +1 -0
  752. package/dist/types/components/ui/icons/UndoIcon.d.ts +3 -0
  753. package/dist/types/components/ui/icons/UndoIcon.d.ts.map +1 -0
  754. package/dist/types/components/ui/table.d.ts +11 -0
  755. package/dist/types/components/ui/table.d.ts.map +1 -0
  756. package/dist/types/context/ChipsContext.d.ts +8 -0
  757. package/dist/types/context/ChipsContext.d.ts.map +1 -0
  758. package/dist/types/context/ComponentDependenciesContext.d.ts +8 -0
  759. package/dist/types/context/ComponentDependenciesContext.d.ts.map +1 -0
  760. package/dist/types/entity/defaultExtractor.d.ts +14 -0
  761. package/dist/types/entity/defaultExtractor.d.ts.map +1 -0
  762. package/dist/types/entity/enrichEntitiesFromPayload.d.ts +27 -0
  763. package/dist/types/entity/enrichEntitiesFromPayload.d.ts.map +1 -0
  764. package/dist/types/entity/fetchEntityListData.d.ts +20 -0
  765. package/dist/types/entity/fetchEntityListData.d.ts.map +1 -0
  766. package/dist/types/entity/index.d.ts +16 -0
  767. package/dist/types/entity/index.d.ts.map +1 -0
  768. package/dist/types/entity/types.d.ts +13 -0
  769. package/dist/types/entity/types.d.ts.map +1 -0
  770. package/dist/types/errors/conversationErrorTypes.d.ts +20 -0
  771. package/dist/types/errors/conversationErrorTypes.d.ts.map +1 -0
  772. package/dist/types/errors/errorTemplates.d.ts +27 -0
  773. package/dist/types/errors/errorTemplates.d.ts.map +1 -0
  774. package/dist/types/errors/index.d.ts +3 -0
  775. package/dist/types/errors/index.d.ts.map +1 -0
  776. package/dist/types/featureToggles/FeatureToggleContext.d.ts +18 -0
  777. package/dist/types/featureToggles/FeatureToggleContext.d.ts.map +1 -0
  778. package/dist/types/hooks/useConversation.d.ts +3 -0
  779. package/dist/types/hooks/useConversation.d.ts.map +1 -0
  780. package/dist/types/hooks/useDebugImageContext.d.ts +2 -0
  781. package/dist/types/hooks/useDebugImageContext.d.ts.map +1 -0
  782. package/dist/types/hooks/useEntityTransforms.d.ts +3 -0
  783. package/dist/types/hooks/useEntityTransforms.d.ts.map +1 -0
  784. package/dist/types/hooks/useMarkdownUtils.d.ts +3 -0
  785. package/dist/types/hooks/useMarkdownUtils.d.ts.map +1 -0
  786. package/dist/types/hooks/useResolveGenericEntityData.d.ts +11 -0
  787. package/dist/types/hooks/useResolveGenericEntityData.d.ts.map +1 -0
  788. package/dist/types/hooks/useResolveSearchSpringEntityData.d.ts +20 -0
  789. package/dist/types/hooks/useResolveSearchSpringEntityData.d.ts.map +1 -0
  790. package/dist/types/hooks/useResolveShopifyEntityData.d.ts +21 -0
  791. package/dist/types/hooks/useResolveShopifyEntityData.d.ts.map +1 -0
  792. package/dist/types/hooks/useResolvedImageSources.d.ts +6 -0
  793. package/dist/types/hooks/useResolvedImageSources.d.ts.map +1 -0
  794. package/dist/types/hooks/useWeb5Link.d.ts +3 -0
  795. package/dist/types/hooks/useWeb5Link.d.ts.map +1 -0
  796. package/dist/types/image/contextualImageTypes.d.ts +17 -0
  797. package/dist/types/image/contextualImageTypes.d.ts.map +1 -0
  798. package/dist/types/image/imageSearchFilterTypes.d.ts +14 -0
  799. package/dist/types/image/imageSearchFilterTypes.d.ts.map +1 -0
  800. package/dist/types/image/imageSearchFilters.d.ts +16 -0
  801. package/dist/types/image/imageSearchFilters.d.ts.map +1 -0
  802. package/dist/types/index.d.ts +88 -0
  803. package/dist/types/index.d.ts.map +1 -0
  804. package/dist/types/lib/utils.d.ts +3 -0
  805. package/dist/types/lib/utils.d.ts.map +1 -0
  806. package/dist/types/markdownBlocks.d.ts +44 -0
  807. package/dist/types/markdownBlocks.d.ts.map +1 -0
  808. package/dist/types/match/astToParts.d.ts +15 -0
  809. package/dist/types/match/astToParts.d.ts.map +1 -0
  810. package/dist/types/match/extractProps.d.ts +207 -0
  811. package/dist/types/match/extractProps.d.ts.map +1 -0
  812. package/dist/types/match/index.d.ts +4 -0
  813. package/dist/types/match/index.d.ts.map +1 -0
  814. package/dist/types/match/matchAllSections.d.ts +15 -0
  815. package/dist/types/match/matchAllSections.d.ts.map +1 -0
  816. package/dist/types/match/matchMarkdown.d.ts +25 -0
  817. package/dist/types/match/matchMarkdown.d.ts.map +1 -0
  818. package/dist/types/parts/parts.d.ts +144 -0
  819. package/dist/types/parts/parts.d.ts.map +1 -0
  820. package/dist/types/patternAnalyzer/conflictDetector.d.ts +19 -0
  821. package/dist/types/patternAnalyzer/conflictDetector.d.ts.map +1 -0
  822. package/dist/types/patternAnalyzer/index.d.ts +10 -0
  823. package/dist/types/patternAnalyzer/index.d.ts.map +1 -0
  824. package/dist/types/patternAnalyzer/markdownGenerator.d.ts +9 -0
  825. package/dist/types/patternAnalyzer/markdownGenerator.d.ts.map +1 -0
  826. package/dist/types/patternAnalyzer/mergeDetector.d.ts +14 -0
  827. package/dist/types/patternAnalyzer/mergeDetector.d.ts.map +1 -0
  828. package/dist/types/patternAnalyzer/parserValidator.d.ts +13 -0
  829. package/dist/types/patternAnalyzer/parserValidator.d.ts.map +1 -0
  830. package/dist/types/patternAnalyzer/patternWriter.d.ts +8 -0
  831. package/dist/types/patternAnalyzer/patternWriter.d.ts.map +1 -0
  832. package/dist/types/patternAnalyzer/run.d.ts +2 -0
  833. package/dist/types/patternAnalyzer/run.d.ts.map +1 -0
  834. package/dist/types/patternAnalyzer/types.d.ts +59 -0
  835. package/dist/types/patternAnalyzer/types.d.ts.map +1 -0
  836. package/dist/types/patternValidator/automaton.d.ts +3 -0
  837. package/dist/types/patternValidator/automaton.d.ts.map +1 -0
  838. package/dist/types/patternValidator/index.d.ts +48 -0
  839. package/dist/types/patternValidator/index.d.ts.map +1 -0
  840. package/dist/types/patternValidator/lexer.d.ts +3 -0
  841. package/dist/types/patternValidator/lexer.d.ts.map +1 -0
  842. package/dist/types/patternValidator/matcher.d.ts +14 -0
  843. package/dist/types/patternValidator/matcher.d.ts.map +1 -0
  844. package/dist/types/patternValidator/parser.d.ts +14 -0
  845. package/dist/types/patternValidator/parser.d.ts.map +1 -0
  846. package/dist/types/patternValidator/types.d.ts +125 -0
  847. package/dist/types/patternValidator/types.d.ts.map +1 -0
  848. package/dist/types/patternValidator/validator.test.d.ts +2 -0
  849. package/dist/types/patternValidator/validator.test.d.ts.map +1 -0
  850. package/dist/types/registry/ComponentRegistry.d.ts +64 -0
  851. package/dist/types/registry/ComponentRegistry.d.ts.map +1 -0
  852. package/dist/types/registry/Intent.d.ts +12 -0
  853. package/dist/types/registry/Intent.d.ts.map +1 -0
  854. package/dist/types/registry/index.d.ts +4 -0
  855. package/dist/types/registry/index.d.ts.map +1 -0
  856. package/dist/types/registry/types.d.ts +99 -0
  857. package/dist/types/registry/types.d.ts.map +1 -0
  858. package/dist/types/services/cart/addToCart.d.ts +26 -0
  859. package/dist/types/services/cart/addToCart.d.ts.map +1 -0
  860. package/dist/types/services/cart/index.d.ts +2 -0
  861. package/dist/types/services/cart/index.d.ts.map +1 -0
  862. package/dist/types/services/searchspring/index.d.ts +4 -0
  863. package/dist/types/services/searchspring/index.d.ts.map +1 -0
  864. package/dist/types/services/searchspring/searchSpringClient.d.ts +13 -0
  865. package/dist/types/services/searchspring/searchSpringClient.d.ts.map +1 -0
  866. package/dist/types/services/searchspring/transformSSProduct.d.ts +7 -0
  867. package/dist/types/services/searchspring/transformSSProduct.d.ts.map +1 -0
  868. package/dist/types/services/searchspring/types.d.ts +48 -0
  869. package/dist/types/services/searchspring/types.d.ts.map +1 -0
  870. package/dist/types/services/shopify/index.d.ts +7 -0
  871. package/dist/types/services/shopify/index.d.ts.map +1 -0
  872. package/dist/types/services/shopify/queries.d.ts +13 -0
  873. package/dist/types/services/shopify/queries.d.ts.map +1 -0
  874. package/dist/types/services/shopify/resolveStoreDomain.d.ts +14 -0
  875. package/dist/types/services/shopify/resolveStoreDomain.d.ts.map +1 -0
  876. package/dist/types/services/shopify/shopifyEntityResolver.d.ts +21 -0
  877. package/dist/types/services/shopify/shopifyEntityResolver.d.ts.map +1 -0
  878. package/dist/types/services/shopify/shopifyStorefrontClient.d.ts +19 -0
  879. package/dist/types/services/shopify/shopifyStorefrontClient.d.ts.map +1 -0
  880. package/dist/types/services/shopify/transformShopifyEntity.d.ts +11 -0
  881. package/dist/types/services/shopify/transformShopifyEntity.d.ts.map +1 -0
  882. package/dist/types/services/shopify/types.d.ts +109 -0
  883. package/dist/types/services/shopify/types.d.ts.map +1 -0
  884. package/dist/types/testUtils.d.ts +7 -0
  885. package/dist/types/testUtils.d.ts.map +1 -0
  886. package/dist/types/types/answerUpdatedEvent.d.ts +29 -0
  887. package/dist/types/types/answerUpdatedEvent.d.ts.map +1 -0
  888. package/dist/types/types/blog.d.ts +22 -0
  889. package/dist/types/types/blog.d.ts.map +1 -0
  890. package/dist/types/types/callout.d.ts +7 -0
  891. package/dist/types/types/callout.d.ts.map +1 -0
  892. package/dist/types/types/dependencies.d.ts +191 -0
  893. package/dist/types/types/dependencies.d.ts.map +1 -0
  894. package/dist/types/types/entity.d.ts +38 -0
  895. package/dist/types/types/entity.d.ts.map +1 -0
  896. package/dist/types/types/link-types.d.ts +38 -0
  897. package/dist/types/types/link-types.d.ts.map +1 -0
  898. package/dist/types/types/page-section.d.ts +27 -0
  899. package/dist/types/types/page-section.d.ts.map +1 -0
  900. package/dist/types/types/placement.d.ts +94 -0
  901. package/dist/types/types/placement.d.ts.map +1 -0
  902. package/dist/types/types/redirectEvent.d.ts +42 -0
  903. package/dist/types/types/redirectEvent.d.ts.map +1 -0
  904. package/dist/types/types/userQueryEvent.d.ts +24 -0
  905. package/dist/types/types/userQueryEvent.d.ts.map +1 -0
  906. package/dist/types/utils/analyticsEvents.d.ts +24 -0
  907. package/dist/types/utils/analyticsEvents.d.ts.map +1 -0
  908. package/dist/types/utils/componentTracking.d.ts +55 -0
  909. package/dist/types/utils/componentTracking.d.ts.map +1 -0
  910. package/dist/types/utils/contentKeywordMatcher.d.ts +14 -0
  911. package/dist/types/utils/contentKeywordMatcher.d.ts.map +1 -0
  912. package/dist/types/utils/conversationApi.d.ts +26 -0
  913. package/dist/types/utils/conversationApi.d.ts.map +1 -0
  914. package/dist/types/utils/conversationMode.d.ts +16 -0
  915. package/dist/types/utils/conversationMode.d.ts.map +1 -0
  916. package/dist/types/utils/diagnosticsCollector.d.ts +33 -0
  917. package/dist/types/utils/diagnosticsCollector.d.ts.map +1 -0
  918. package/dist/types/utils/entityLinkParser.d.ts +97 -0
  919. package/dist/types/utils/entityLinkParser.d.ts.map +1 -0
  920. package/dist/types/utils/htmlCommentParser.d.ts +13 -0
  921. package/dist/types/utils/htmlCommentParser.d.ts.map +1 -0
  922. package/dist/types/utils/image-utils.d.ts +10 -0
  923. package/dist/types/utils/image-utils.d.ts.map +1 -0
  924. package/dist/types/utils/intentExtractor.d.ts +11 -0
  925. package/dist/types/utils/intentExtractor.d.ts.map +1 -0
  926. package/dist/types/utils/markdownPreprocessor.d.ts +95 -0
  927. package/dist/types/utils/markdownPreprocessor.d.ts.map +1 -0
  928. package/dist/types/utils/navigationStack.d.ts +6 -0
  929. package/dist/types/utils/navigationStack.d.ts.map +1 -0
  930. package/dist/types/utils/nodeMatchers.d.ts +10 -0
  931. package/dist/types/utils/nodeMatchers.d.ts.map +1 -0
  932. package/dist/types/utils/propsExtractor.d.ts +51 -0
  933. package/dist/types/utils/propsExtractor.d.ts.map +1 -0
  934. package/dist/types/utils/sessionManager.d.ts +57 -0
  935. package/dist/types/utils/sessionManager.d.ts.map +1 -0
  936. package/dist/types/utils/unifiedMarkdownParser.d.ts +9 -0
  937. package/dist/types/utils/unifiedMarkdownParser.d.ts.map +1 -0
  938. package/dist/types/utils/web5LinkValidator.d.ts +14 -0
  939. package/dist/types/utils/web5LinkValidator.d.ts.map +1 -0
  940. package/dist/types/utils/web5LinkValidator.test.d.ts +2 -0
  941. package/dist/types/utils/web5LinkValidator.test.d.ts.map +1 -0
  942. package/package.json +103 -0
  943. package/src/styles/base-tokens.css +152 -0
  944. package/src/styles/base-utilities.css +424 -0
  945. package/src/styles/components.css +6 -0
  946. package/src/styles/prompt-input-tokens.css +136 -0
  947. package/src/styles/tailwind-theme.css +138 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_automaton","require","parseListFromElement","element","elementStr","startsWith","listMatch","match","content","items","i","length","depth","itemContent","elements","split","map","e","trim","filter","push","findAllListPatterns","node","listPatterns","Map","traverse","n","kind","key","has","set","children","forEach","choices","pattern","validateListItems","itemCount","itemStructure","enrichedItems","min","max","Infinity","minStr","toString","maxStr","rangeStr","valid","error","startIndex","endIndex","enrichedItem","result","validateItemStructure","item","itemIndex","automaton","buildAutomaton","isValid","matchResult","matchSimple","patternStr","formatPatternNode","join","formatQuantifier","quantifier","type","undefined","epsilonClosure","stateIds","closure","Set","stack","Array","from","state","pop","transition","transitions","condition","to","add","getNextStates","currentStates","nextStates","matchesCondition","startState","size","acceptStates","validateLinkAttributes","metadata","requiredAttrs","availableAttrs","url","protocol","web5Type","entityType","entityId","attr","value","operator","_attr$value","toLowerCase","includes","endsWith","validateImageAttributes","src","alt","validateHtmlCommentAttributes","elementMatchesStop","enrichedElement","stop","elementType","htmlCommentAttrs","htmlCommentMetadata","linkAttrs","linkMetadata","imageAttrs","imageMetadata","ast","patternNode","_patternNode","findAllPatternNodesForElement","results","child","choice","findPatternNodeForElement","matchingNodes","defaultListPattern","get","elementIndex","lastValidIndex","lastAcceptStateIndex","isInAcceptState","wasInAcceptStateBefore","listItems","validationResult","listItemsEnriched","listPatternNode","astNodeIndex","elementPatternNode"],"sources":["../../../src/patternValidator/matcher.ts"],"sourcesContent":["import type {\n Automaton,\n BlockElement,\n TransitionCondition,\n PatternNode,\n EnrichedBlockElement,\n HtmlCommentAttribute,\n LinkAttribute,\n ImageAttribute,\n LinkMetadata,\n ImageMetadata,\n StopCondition,\n} from './types';\nimport { buildAutomaton } from './automaton';\n\nexport type MatchResult = {\n valid: boolean;\n error?: string;\n startIndex: number;\n endIndex: number;\n};\n\nfunction parseListFromElement(element: BlockElement): string[][] | null {\n const elementStr = element as string;\n if (!elementStr.startsWith('list{')) {\n return null;\n }\n\n const listMatch = elementStr.match(/^list\\{(.+)\\}$/);\n if (!listMatch) {\n return null;\n }\n\n const content = listMatch[1];\n const items: string[][] = [];\n let i = 0;\n\n // Handle double bracket format: [[item1], [item2]]\n while (i < content.length) {\n if (content[i] === '[') {\n i++; // skip first [\n let depth = 1;\n let itemContent = '';\n\n while (i < content.length && depth > 0) {\n if (content[i] === '[') {\n depth++;\n }\n if (content[i] === ']') {\n depth--;\n }\n if (depth > 0) {\n itemContent += content[i];\n }\n i++;\n }\n\n const elements = itemContent\n .split(',')\n .map((e) => e.trim())\n .filter((e) => e);\n if (elements.length > 0) {\n items.push(elements);\n }\n } else {\n i++;\n }\n }\n\n return items.length > 0 ? items : null;\n}\n\nfunction findAllListPatterns(\n node: PatternNode,\n): Map<string, PatternNode & { kind: 'list' }> {\n // Create a map of list element signatures to their pattern nodes\n // This handles lists that appear multiple times due to quantifiers\n const listPatterns = new Map<string, PatternNode & { kind: 'list' }>();\n\n function traverse(n: PatternNode): void {\n if (n.kind === 'list') {\n // Use the list structure as a key (simplified - in reality all lists use same structure)\n const key = 'list';\n if (!listPatterns.has(key)) {\n listPatterns.set(key, n);\n }\n } else if (n.kind === 'sequence') {\n n.children.forEach(traverse);\n } else if (n.kind === 'alternation') {\n n.choices.forEach(traverse);\n } else if (n.kind === 'group') {\n traverse(n.pattern);\n }\n }\n\n traverse(node);\n return listPatterns;\n}\n\nfunction validateListItems(\n items: string[][],\n itemCount?: { min?: number; max?: number },\n itemStructure?: PatternNode,\n enrichedItems?: EnrichedBlockElement[][],\n): MatchResult {\n // Validate item count\n if (itemCount) {\n const min = itemCount.min ?? 0;\n const max = itemCount.max ?? Infinity;\n if (items.length < min || items.length > max) {\n const minStr = min === 0 ? '0' : min.toString();\n const maxStr = max === Infinity ? 'unlimited' : max.toString();\n const rangeStr =\n min === max ? `exactly ${min}` : `between ${minStr} and ${maxStr}`;\n return {\n valid: false,\n error: `Expected ${rangeStr} items in list, but got ${items.length} items`,\n startIndex: 0,\n endIndex: -1,\n };\n }\n }\n\n // Validate each item structure\n if (itemStructure) {\n for (let i = 0; i < items.length; i++) {\n const enrichedItem = enrichedItems?.[i];\n const result = validateItemStructure(\n items[i],\n itemStructure,\n i,\n enrichedItem,\n );\n if (!result.valid) {\n return result;\n }\n }\n }\n\n return {\n valid: true,\n startIndex: 0,\n endIndex: items.length > 0 ? items.length - 1 : -1,\n };\n}\n\nfunction validateItemStructure(\n item: string[],\n pattern: PatternNode,\n itemIndex: number,\n enrichedItem?: EnrichedBlockElement[],\n): MatchResult {\n // Build automaton for the item pattern\n const automaton = buildAutomaton(pattern);\n\n let isValid: boolean;\n if (enrichedItem) {\n // Use full match with metadata for attribute checking (e.g., link[entityType=\"solution\"])\n const matchResult = match(automaton, enrichedItem, pattern);\n // Require full match: all elements must be consumed (no extra trailing elements)\n isValid =\n matchResult.valid && matchResult.endIndex === enrichedItem.length - 1;\n } else {\n // Fallback: use simple matching without metadata\n isValid = matchSimple(automaton, item as BlockElement[]);\n }\n\n if (!isValid) {\n const patternStr = formatPatternNode(pattern);\n return {\n valid: false,\n error: `Item #${itemIndex + 1} [${item.join(\n ', ',\n )}] does not match expected pattern: ${patternStr}`,\n startIndex: 0,\n endIndex: -1,\n };\n }\n\n return {\n valid: true,\n startIndex: 0,\n endIndex: item.length > 0 ? item.length - 1 : -1,\n };\n}\n\nfunction formatPatternNode(node: PatternNode): string {\n switch (node.kind) {\n case 'element':\n return node.element + formatQuantifier(node.quantifier);\n case 'sequence':\n return node.children.map(formatPatternNode).join(' > ');\n case 'alternation':\n return node.choices.map(formatPatternNode).join(' | ');\n case 'group':\n return (\n '(' +\n formatPatternNode(node.pattern) +\n ')' +\n formatQuantifier(node.quantifier)\n );\n case 'list':\n return 'list{...}';\n default:\n return '?';\n }\n}\n\nfunction formatQuantifier(quantifier?: {\n type: string;\n min?: number;\n max?: number;\n}): string {\n if (!quantifier) {\n return '';\n }\n switch (quantifier.type) {\n case 'star':\n return '*';\n case 'plus':\n return '+';\n case 'optional':\n return '?';\n case 'exact':\n return `[${quantifier.min}]`;\n case 'range':\n if (quantifier.min === undefined) {\n return `[-${quantifier.max}]`;\n }\n if (quantifier.max === undefined) {\n return `[${quantifier.min}-]`;\n }\n return `[${quantifier.min}-${quantifier.max}]`;\n default:\n return '';\n }\n}\n\nfunction matchSimple(automaton: Automaton, elements: BlockElement[]): boolean {\n function epsilonClosure(stateIds: Set<string>): Set<string> {\n const closure = new Set(stateIds);\n const stack = Array.from(stateIds);\n\n while (stack.length > 0) {\n const state = stack.pop()!;\n for (const transition of automaton.transitions) {\n if (\n transition.from === state &&\n transition.condition.type === 'epsilon' &&\n !closure.has(transition.to)\n ) {\n closure.add(transition.to);\n stack.push(transition.to);\n }\n }\n }\n\n return closure;\n }\n\n function getNextStates(\n currentStates: Set<string>,\n element: BlockElement,\n ): Set<string> {\n const nextStates = new Set<string>();\n\n for (const state of currentStates) {\n for (const transition of automaton.transitions) {\n if (\n transition.from === state &&\n matchesCondition(transition.condition, element)\n ) {\n nextStates.add(transition.to);\n }\n }\n }\n\n return nextStates;\n }\n\n function matchesCondition(\n condition: TransitionCondition,\n element: BlockElement,\n ): boolean {\n if (condition.type === 'element') {\n return condition.element === element;\n }\n return false;\n }\n\n let currentStates = epsilonClosure(new Set([automaton.startState]));\n\n for (const element of elements) {\n const nextStates = getNextStates(currentStates, element);\n if (nextStates.size === 0) {\n return false;\n }\n currentStates = epsilonClosure(nextStates);\n }\n\n for (const state of currentStates) {\n if (automaton.acceptStates.has(state)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction validateLinkAttributes(\n metadata: LinkMetadata | undefined,\n requiredAttrs: LinkAttribute[],\n): boolean {\n if (!metadata) {\n // If metadata is missing but attributes are required, return false\n return requiredAttrs.length === 0;\n }\n\n // Build a record of all available attributes from LinkMetadata\n const availableAttrs: Record<string, string | undefined> = {\n url: metadata.url,\n protocol: metadata.protocol,\n web5Type: metadata.web5Type,\n entityType: metadata.entityType,\n entityId: metadata.entityId,\n };\n\n // Validate each required attribute\n for (const attr of requiredAttrs) {\n const value = availableAttrs[attr.key];\n\n switch (attr.operator) {\n case 'exists':\n // Check if key exists and has a non-undefined value\n if (value === undefined) {\n return false;\n }\n break;\n case 'equals':\n // Case-insensitive comparison for entityType, exact match for others\n if (attr.key === 'entityType') {\n if (value?.toLowerCase() !== attr.value?.toLowerCase()) {\n return false;\n }\n } else if (value !== attr.value) {\n return false;\n }\n break;\n case 'contains':\n // Check if value contains substring\n if (value === undefined || !attr.value || !value.includes(attr.value)) {\n return false;\n }\n break;\n case 'startsWith':\n // Check if value starts with prefix\n if (\n value === undefined ||\n !attr.value ||\n !value.startsWith(attr.value)\n ) {\n return false;\n }\n break;\n case 'endsWith':\n // Check if value ends with suffix\n if (value === undefined || !attr.value || !value.endsWith(attr.value)) {\n return false;\n }\n break;\n }\n }\n\n return true;\n}\n\nfunction validateImageAttributes(\n metadata: ImageMetadata | undefined,\n requiredAttrs: ImageAttribute[],\n): boolean {\n if (!metadata) {\n return requiredAttrs.length === 0;\n }\n\n const availableAttrs: Record<string, string | undefined> = {\n src: metadata.src,\n alt: metadata.alt,\n type: metadata.type,\n };\n\n for (const attr of requiredAttrs) {\n const value = availableAttrs[attr.key];\n\n switch (attr.operator) {\n case 'exists':\n if (value === undefined) {\n return false;\n }\n break;\n case 'equals':\n if (value !== attr.value) {\n return false;\n }\n break;\n case 'contains':\n if (value === undefined || !attr.value || !value.includes(attr.value)) {\n return false;\n }\n break;\n case 'startsWith':\n if (\n value === undefined ||\n !attr.value ||\n !value.startsWith(attr.value)\n ) {\n return false;\n }\n break;\n case 'endsWith':\n if (value === undefined || !attr.value || !value.endsWith(attr.value)) {\n return false;\n }\n break;\n }\n }\n\n return true;\n}\n\nfunction validateHtmlCommentAttributes(\n metadata: Record<string, string> | undefined,\n requiredAttrs: HtmlCommentAttribute[],\n): boolean {\n if (!metadata) {\n // If metadata is missing, no attributes can exist\n return requiredAttrs.length === 0;\n }\n\n // Validate each required attribute\n for (const attr of requiredAttrs) {\n const value = metadata[attr.key];\n\n switch (attr.operator) {\n case 'exists':\n // Check if key exists in metadata\n if (!(attr.key in metadata)) {\n return false;\n }\n break;\n case 'equals':\n // Check if value equals exactly\n if (value !== attr.value) {\n return false;\n }\n break;\n case 'contains':\n // Check if value contains substring\n if (!value || !attr.value || !value.includes(attr.value)) {\n return false;\n }\n break;\n case 'startsWith':\n // Check if value starts with prefix\n if (!value || !attr.value || !value.startsWith(attr.value)) {\n return false;\n }\n break;\n case 'endsWith':\n // Check if value ends with suffix\n if (!value || !attr.value || !value.endsWith(attr.value)) {\n return false;\n }\n break;\n }\n }\n\n return true;\n}\n\n/**\n * Checks whether an enriched block element satisfies a pattern's `~` stop\n * condition (element type plus optional attribute selectors).\n */\nexport function elementMatchesStop(\n enrichedElement: EnrichedBlockElement,\n stop: StopCondition,\n): boolean {\n // List elements may carry an inline structure (e.g. 'list{[t],[t]}')\n const elementType = (enrichedElement.element as string).startsWith('list')\n ? 'list'\n : enrichedElement.element;\n\n if (elementType !== stop.element) {\n return false;\n }\n\n if (stop.htmlCommentAttrs) {\n return validateHtmlCommentAttributes(\n enrichedElement.htmlCommentMetadata,\n stop.htmlCommentAttrs,\n );\n }\n if (stop.linkAttrs) {\n return validateLinkAttributes(enrichedElement.linkMetadata, stop.linkAttrs);\n }\n if (stop.imageAttrs) {\n return validateImageAttributes(\n enrichedElement.imageMetadata,\n stop.imageAttrs,\n );\n }\n\n return true;\n}\n\nexport function match(\n automaton: Automaton,\n elements: EnrichedBlockElement[],\n ast?: PatternNode,\n): MatchResult {\n function epsilonClosure(stateIds: Set<string>): Set<string> {\n const closure = new Set(stateIds);\n const stack = Array.from(stateIds);\n\n while (stack.length > 0) {\n const state = stack.pop()!;\n for (const transition of automaton.transitions) {\n if (\n transition.from === state &&\n transition.condition.type === 'epsilon' &&\n !closure.has(transition.to)\n ) {\n closure.add(transition.to);\n stack.push(transition.to);\n }\n }\n }\n\n return closure;\n }\n\n function getNextStates(\n currentStates: Set<string>,\n enrichedElement: EnrichedBlockElement,\n patternNode?: PatternNode,\n ): Set<string> {\n const nextStates = new Set<string>();\n\n for (const state of currentStates) {\n for (const transition of automaton.transitions) {\n if (\n transition.from === state &&\n matchesCondition(transition.condition, enrichedElement, patternNode)\n ) {\n nextStates.add(transition.to);\n }\n }\n }\n\n return nextStates;\n }\n\n function matchesCondition(\n condition: TransitionCondition,\n enrichedElement: EnrichedBlockElement,\n _patternNode?: PatternNode,\n ): boolean {\n if (condition.type === 'element') {\n const element = enrichedElement.element;\n\n // Check if element type matches\n if (condition.element !== element) {\n return false;\n }\n\n // If this is an html_comment element, check HTML comment attributes from the transition\n if (element === 'html_comment' && condition.htmlCommentAttrs) {\n return validateHtmlCommentAttributes(\n enrichedElement.htmlCommentMetadata,\n condition.htmlCommentAttrs,\n );\n }\n\n // If this is a link element, check link attributes from the transition\n if (element === 'link' && condition.linkAttrs) {\n return validateLinkAttributes(\n enrichedElement.linkMetadata,\n condition.linkAttrs,\n );\n }\n\n // If this is an image element, check image attributes from the transition\n if (element === 'image' && condition.imageAttrs) {\n return validateImageAttributes(\n enrichedElement.imageMetadata,\n condition.imageAttrs,\n );\n }\n\n return true;\n }\n return false;\n }\n\n // Helper function to find all pattern nodes for a given element type\n function findAllPatternNodesForElement(\n elementType: BlockElement,\n pattern: PatternNode,\n ): PatternNode[] {\n const results: PatternNode[] = [];\n function traverse(node: PatternNode): void {\n if (node.kind === 'element' && node.element === elementType) {\n results.push(node);\n }\n if (node.kind === 'sequence') {\n for (const child of node.children) {\n traverse(child);\n }\n }\n if (node.kind === 'alternation') {\n for (const choice of node.choices) {\n traverse(choice);\n }\n }\n if (node.kind === 'group') {\n traverse(node.pattern);\n }\n }\n traverse(pattern);\n return results;\n }\n\n // Helper function to find the first matching pattern node for an element\n // If multiple exist, we check them all and return the first that matches attributes (if any)\n function findPatternNodeForElement(\n elementType: BlockElement,\n pattern: PatternNode,\n enrichedElement: EnrichedBlockElement,\n ): PatternNode | undefined {\n const matchingNodes = findAllPatternNodesForElement(elementType, pattern);\n if (matchingNodes.length === 0) {\n return undefined;\n }\n if (matchingNodes.length === 1) {\n return matchingNodes[0];\n }\n // If multiple pattern nodes exist, find one that matches attributes (if element has attributes)\n if (elementType === 'html_comment' && enrichedElement.htmlCommentMetadata) {\n for (const node of matchingNodes) {\n if (node.kind === 'element' && node.htmlCommentAttrs) {\n if (\n validateHtmlCommentAttributes(\n enrichedElement.htmlCommentMetadata,\n node.htmlCommentAttrs,\n )\n ) {\n return node;\n }\n }\n }\n }\n // If multiple pattern nodes exist for link, find one that matches link attributes\n if (elementType === 'link' && enrichedElement.linkMetadata) {\n for (const node of matchingNodes) {\n if (node.kind === 'element' && node.linkAttrs) {\n if (\n validateLinkAttributes(enrichedElement.linkMetadata, node.linkAttrs)\n ) {\n return node;\n }\n }\n }\n }\n // If multiple pattern nodes exist for image, find one that matches image attributes\n if (elementType === 'image' && enrichedElement.imageMetadata) {\n for (const node of matchingNodes) {\n if (node.kind === 'element' && node.imageAttrs) {\n if (\n validateImageAttributes(\n enrichedElement.imageMetadata,\n node.imageAttrs,\n )\n ) {\n return node;\n }\n }\n }\n }\n // Return first matching node if no attribute match found\n return matchingNodes[0];\n }\n\n // Extract list patterns from AST if provided\n // Use a map so the same pattern applies to all list instances\n const listPatterns = ast ? findAllListPatterns(ast) : new Map();\n const defaultListPattern = listPatterns.get('list');\n\n let currentStates = epsilonClosure(new Set([automaton.startState]));\n let elementIndex = 0;\n let lastValidIndex = -1; // Track the last successfully matched element index\n let lastAcceptStateIndex = -1; // Track when we were last in an accept state\n\n // Handle empty array case\n if (elements.length === 0) {\n // Check if empty array is acceptable (pattern allows zero elements)\n for (const state of currentStates) {\n if (automaton.acceptStates.has(state)) {\n return { valid: true, startIndex: 0, endIndex: -1 };\n }\n }\n return {\n valid: false,\n error: 'Empty array does not match pattern',\n startIndex: 0,\n endIndex: -1,\n };\n }\n\n for (const enrichedElement of elements) {\n // Check if we're already in an accept state before processing this element\n // If so, this element is extra and we can accept it\n let isInAcceptState = false;\n for (const state of currentStates) {\n if (automaton.acceptStates.has(state)) {\n isInAcceptState = true;\n break;\n }\n }\n\n // Also check if we were in an accept state before starting to match incomplete elements\n // This handles cases where we matched some elements after being in an accept state,\n // but those elements didn't complete the pattern\n const wasInAcceptStateBefore =\n lastAcceptStateIndex >= 0 && elementIndex > lastAcceptStateIndex;\n\n const element = enrichedElement.element;\n // Check if this is a list element\n const listItems = parseListFromElement(element);\n if (listItems !== null && defaultListPattern) {\n // Validate list items using the pattern\n const validationResult = validateListItems(\n listItems,\n defaultListPattern.itemCount,\n defaultListPattern.itemStructure,\n enrichedElement.listItemsEnriched,\n );\n if (!validationResult.valid) {\n return {\n valid: false,\n error: `List at position ${elementIndex + 1} failed validation: ${\n validationResult.error\n }`,\n startIndex: 0,\n endIndex: lastValidIndex,\n };\n }\n\n // Continue matching with 'list' as element type\n const listPatternNode = ast\n ? findPatternNodeForElement('list', ast, {\n element: 'list',\n astNodeIndex: enrichedElement.astNodeIndex,\n })\n : undefined;\n const nextStates = getNextStates(\n currentStates,\n { element: 'list', astNodeIndex: enrichedElement.astNodeIndex },\n listPatternNode,\n );\n if (nextStates.size === 0) {\n // No transitions - if we were already in accept state, extra elements are OK\n if (isInAcceptState || wasInAcceptStateBefore) {\n // Pattern was fully matched, extra elements are OK\n return {\n valid: true,\n startIndex: 0,\n endIndex:\n lastAcceptStateIndex >= 0 ? lastAcceptStateIndex : lastValidIndex,\n };\n }\n\n return {\n valid: false,\n error: `Unexpected list at position ${\n elementIndex + 1\n }. Pattern does not expect a list here.`,\n startIndex: 0,\n endIndex: lastValidIndex,\n };\n }\n currentStates = epsilonClosure(nextStates);\n // Successfully matched this element\n lastValidIndex = elementIndex;\n\n // Check if we're now in an accept state (after matching list)\n for (const state of currentStates) {\n if (automaton.acceptStates.has(state)) {\n lastAcceptStateIndex = elementIndex;\n break;\n }\n }\n } else if (listItems !== null) {\n // List without validation pattern - just match as 'list'\n const listPatternNode = ast\n ? findPatternNodeForElement('list', ast, {\n element: 'list',\n astNodeIndex: enrichedElement.astNodeIndex,\n })\n : undefined;\n const nextStates = getNextStates(\n currentStates,\n { element: 'list', astNodeIndex: enrichedElement.astNodeIndex },\n listPatternNode,\n );\n if (nextStates.size === 0) {\n // No transitions - if we were already in accept state, extra elements are OK\n if (isInAcceptState || wasInAcceptStateBefore) {\n // Pattern was fully matched, extra elements are OK\n return {\n valid: true,\n startIndex: 0,\n endIndex:\n lastAcceptStateIndex >= 0 ? lastAcceptStateIndex : lastValidIndex,\n };\n }\n\n return {\n valid: false,\n error: `Unexpected list at position ${\n elementIndex + 1\n }. Pattern does not expect a list here.`,\n startIndex: 0,\n endIndex: lastValidIndex,\n };\n }\n currentStates = epsilonClosure(nextStates);\n // Successfully matched this element\n lastValidIndex = elementIndex;\n\n // Check if we're now in an accept state (after matching list without pattern)\n for (const state of currentStates) {\n if (automaton.acceptStates.has(state)) {\n lastAcceptStateIndex = elementIndex;\n break;\n }\n }\n } else {\n // Regular element matching\n const elementPatternNode = ast\n ? findPatternNodeForElement(element, ast, enrichedElement)\n : undefined;\n const nextStates = getNextStates(\n currentStates,\n enrichedElement,\n elementPatternNode,\n );\n\n if (nextStates.size === 0) {\n // No transitions - if we were already in accept state, extra elements are OK\n if (isInAcceptState || wasInAcceptStateBefore) {\n // Pattern was fully matched, extra elements are OK\n return {\n valid: true,\n startIndex: 0,\n endIndex:\n lastAcceptStateIndex >= 0 ? lastAcceptStateIndex : lastValidIndex,\n };\n }\n\n return {\n valid: false,\n error: `Unexpected element '${element}' at position ${\n elementIndex + 1\n }. Pattern does not match.`,\n startIndex: 0,\n endIndex: lastValidIndex,\n };\n }\n\n // If we're in an accept state and the element matches, check if matching it\n // leads to a state that can eventually complete the pattern\n if (isInAcceptState) {\n // Check if any of the next states are accept states, or can reach accept states\n // via epsilon transitions (which we already did with epsilonClosure)\n // If matching this element doesn't immediately lead to an accept state,\n // it might still be valid if it's part of a larger pattern. But if we're\n // already in an accept state and this element starts a new pattern that\n // can't complete, we should treat it as extra.\n // For now, we'll continue matching and let the pattern fail naturally if incomplete.\n // The key is that we're in an accept state, so if matching fails, we can backtrack.\n void epsilonClosure(nextStates);\n }\n\n currentStates = epsilonClosure(nextStates);\n // Successfully matched this element\n lastValidIndex = elementIndex;\n\n // Check if we're now in an accept state (after matching list or any element)\n for (const state of currentStates) {\n if (automaton.acceptStates.has(state)) {\n lastAcceptStateIndex = elementIndex;\n break;\n }\n }\n }\n\n elementIndex++;\n }\n\n // Check if any current state is an accept state\n for (const state of currentStates) {\n if (automaton.acceptStates.has(state)) {\n // Complete match - all elements matched\n return {\n valid: true,\n startIndex: 0,\n endIndex: elements.length - 1,\n };\n }\n }\n\n // Incomplete match - pattern expects more elements but we've processed all\n // If we were in an accept state at some point, and the incomplete part started\n // after that point, treat the incomplete part as extra elements\n if (lastAcceptStateIndex >= 0 && lastValidIndex > lastAcceptStateIndex) {\n // We were in an accept state, then matched more elements that didn't complete\n // Treat this as a complete match with extra elements\n return {\n valid: true,\n startIndex: 0,\n endIndex: lastAcceptStateIndex,\n };\n }\n\n return {\n valid: false,\n error: `Pattern matching incomplete. Expected more elements after position ${elementIndex}.`,\n startIndex: 0,\n endIndex: lastValidIndex,\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,533 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.parse = parse;
5
+ exports.parseWithStop = parseWithStop;
6
+ /**
7
+ * Parses a pattern, returning only the structural pattern node.
8
+ * A trailing `~ <element>` stop clause is validated but discarded —
9
+ * callers that only care about pattern structure stay compatible
10
+ * with patterns that use a stop clause.
11
+ */
12
+ function parse(tokens) {
13
+ return parseWithStop(tokens).pattern;
14
+ }
15
+ function parseWithStop(tokens) {
16
+ let position = 0;
17
+ function current() {
18
+ return tokens[position];
19
+ }
20
+ function peek(offset = 1) {
21
+ return tokens[position + offset] || {
22
+ type: 'EOF'
23
+ };
24
+ }
25
+ function consume(expected) {
26
+ if (expected && current().type !== expected) {
27
+ throw new Error(`Expected ${expected}, got ${current().type}`);
28
+ }
29
+ return tokens[position++];
30
+ }
31
+
32
+ // Check if the current LBRACKET starts a quantifier (e.g., [2], [1-3], [-5])
33
+ // vs an attribute selector (e.g., [entityType], [entityType="value"])
34
+ function isQuantifierBracket() {
35
+ if (current().type !== 'LBRACKET') {
36
+ return false;
37
+ }
38
+ const nextToken = peek(1);
39
+ // Quantifier brackets start with NUMBER or DASH
40
+ return nextToken.type === 'NUMBER' || nextToken.type === 'DASH';
41
+ }
42
+ function parseQuantifier() {
43
+ if (current().type === 'STAR') {
44
+ consume('STAR');
45
+ return {
46
+ type: 'star',
47
+ min: 0,
48
+ max: undefined
49
+ };
50
+ }
51
+ if (current().type === 'PLUS') {
52
+ consume('PLUS');
53
+ return {
54
+ type: 'plus',
55
+ min: 1,
56
+ max: undefined
57
+ };
58
+ }
59
+ if (current().type === 'QUESTION') {
60
+ consume('QUESTION');
61
+ return {
62
+ type: 'optional',
63
+ min: 0,
64
+ max: 1
65
+ };
66
+ }
67
+ if (current().type === 'LBRACKET') {
68
+ consume('LBRACKET');
69
+ if (current().type === 'DASH') {
70
+ // [-M] means 0 to M
71
+ consume('DASH');
72
+ const max = parseInt(consume('NUMBER').value, 10);
73
+ consume('RBRACKET');
74
+ return {
75
+ type: 'range',
76
+ min: 0,
77
+ max
78
+ };
79
+ }
80
+ const first = parseInt(consume('NUMBER').value, 10);
81
+ if (current().type === 'DASH') {
82
+ consume('DASH');
83
+ if (current().type === 'RBRACKET') {
84
+ // [N-] means N or more (open-ended)
85
+ consume('RBRACKET');
86
+ return {
87
+ type: 'range',
88
+ min: first,
89
+ max: undefined
90
+ };
91
+ }
92
+ // [N-M] means between N and M
93
+ const second = parseInt(consume('NUMBER').value, 10);
94
+ consume('RBRACKET');
95
+ return {
96
+ type: 'range',
97
+ min: first,
98
+ max: second
99
+ };
100
+ }
101
+ consume('RBRACKET');
102
+ return {
103
+ type: 'exact',
104
+ min: first,
105
+ max: first
106
+ };
107
+ }
108
+ throw new Error('Expected quantifier');
109
+ }
110
+ function parseHtmlCommentAttributes() {
111
+ const attributes = [];
112
+
113
+ // Parse one or more attribute selectors: [key], [key=value], [key*=value], etc.
114
+ // Stop when we encounter a quantifier bracket (e.g., [2], [1-3])
115
+ while (current().type === 'LBRACKET' && !isQuantifierBracket()) {
116
+ consume('LBRACKET');
117
+
118
+ // Parse attribute key (identifier or element)
119
+ let key = '';
120
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER') {
121
+ key = current().value;
122
+ consume();
123
+ } else {
124
+ throw new Error(`Expected attribute key, got ${current().type}`);
125
+ }
126
+
127
+ // Check for operator
128
+ if (current().type === 'EQUALS') {
129
+ consume('EQUALS');
130
+ // Check for wildcard
131
+ if (current().type === 'STAR') {
132
+ consume('STAR');
133
+ attributes.push({
134
+ key,
135
+ operator: 'exists'
136
+ });
137
+ } else {
138
+ // Parse value (identifier, element, or string)
139
+ let value = '';
140
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
141
+ value = current().value;
142
+ consume();
143
+ } else {
144
+ throw new Error(`Expected attribute value, got ${current().type}`);
145
+ }
146
+ attributes.push({
147
+ key,
148
+ operator: 'equals',
149
+ value
150
+ });
151
+ }
152
+ } else if (current().type === 'CONTAINS_OP') {
153
+ consume('CONTAINS_OP');
154
+ let value = '';
155
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
156
+ value = current().value;
157
+ consume();
158
+ } else {
159
+ throw new Error(`Expected attribute value, got ${current().type}`);
160
+ }
161
+ attributes.push({
162
+ key,
163
+ operator: 'contains',
164
+ value
165
+ });
166
+ } else if (current().type === 'STARTS_WITH_OP') {
167
+ consume('STARTS_WITH_OP');
168
+ let value = '';
169
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
170
+ value = current().value;
171
+ consume();
172
+ } else {
173
+ throw new Error(`Expected attribute value, got ${current().type}`);
174
+ }
175
+ attributes.push({
176
+ key,
177
+ operator: 'startsWith',
178
+ value
179
+ });
180
+ } else if (current().type === 'ENDS_WITH_OP') {
181
+ consume('ENDS_WITH_OP');
182
+ let value = '';
183
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
184
+ value = current().value;
185
+ consume();
186
+ } else {
187
+ throw new Error(`Expected attribute value, got ${current().type}`);
188
+ }
189
+ attributes.push({
190
+ key,
191
+ operator: 'endsWith',
192
+ value
193
+ });
194
+ } else {
195
+ // No operator means "exists"
196
+ attributes.push({
197
+ key,
198
+ operator: 'exists'
199
+ });
200
+ }
201
+ consume('RBRACKET');
202
+ }
203
+ return attributes;
204
+ }
205
+ function parseLinkAttributes() {
206
+ const attributes = [];
207
+
208
+ // Parse one or more attribute selectors: [key], [key=value], [key*=value], etc.
209
+ // Stop when we encounter a quantifier bracket (e.g., [2], [1-3])
210
+ while (current().type === 'LBRACKET' && !isQuantifierBracket()) {
211
+ consume('LBRACKET');
212
+
213
+ // Parse attribute key (identifier or element)
214
+ let key = '';
215
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER') {
216
+ key = current().value;
217
+ consume();
218
+ } else {
219
+ throw new Error(`Expected attribute key, got ${current().type}`);
220
+ }
221
+
222
+ // Check for operator
223
+ if (current().type === 'EQUALS') {
224
+ consume('EQUALS');
225
+ // Check for wildcard
226
+ if (current().type === 'STAR') {
227
+ consume('STAR');
228
+ attributes.push({
229
+ key,
230
+ operator: 'exists'
231
+ });
232
+ } else {
233
+ // Parse value (identifier, element, or string)
234
+ let value = '';
235
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
236
+ value = current().value;
237
+ consume();
238
+ } else {
239
+ throw new Error(`Expected attribute value, got ${current().type}`);
240
+ }
241
+ attributes.push({
242
+ key,
243
+ operator: 'equals',
244
+ value
245
+ });
246
+ }
247
+ } else if (current().type === 'CONTAINS_OP') {
248
+ consume('CONTAINS_OP');
249
+ let value = '';
250
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
251
+ value = current().value;
252
+ consume();
253
+ } else {
254
+ throw new Error(`Expected attribute value, got ${current().type}`);
255
+ }
256
+ attributes.push({
257
+ key,
258
+ operator: 'contains',
259
+ value
260
+ });
261
+ } else if (current().type === 'STARTS_WITH_OP') {
262
+ consume('STARTS_WITH_OP');
263
+ let value = '';
264
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
265
+ value = current().value;
266
+ consume();
267
+ } else {
268
+ throw new Error(`Expected attribute value, got ${current().type}`);
269
+ }
270
+ attributes.push({
271
+ key,
272
+ operator: 'startsWith',
273
+ value
274
+ });
275
+ } else if (current().type === 'ENDS_WITH_OP') {
276
+ consume('ENDS_WITH_OP');
277
+ let value = '';
278
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
279
+ value = current().value;
280
+ consume();
281
+ } else {
282
+ throw new Error(`Expected attribute value, got ${current().type}`);
283
+ }
284
+ attributes.push({
285
+ key,
286
+ operator: 'endsWith',
287
+ value
288
+ });
289
+ } else {
290
+ // No operator means "exists"
291
+ attributes.push({
292
+ key,
293
+ operator: 'exists'
294
+ });
295
+ }
296
+ consume('RBRACKET');
297
+ }
298
+ return attributes;
299
+ }
300
+ function parseImageAttributes() {
301
+ const attributes = [];
302
+ while (current().type === 'LBRACKET' && !isQuantifierBracket()) {
303
+ consume('LBRACKET');
304
+ let key = '';
305
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER') {
306
+ key = current().value;
307
+ consume();
308
+ } else {
309
+ throw new Error(`Expected attribute key, got ${current().type}`);
310
+ }
311
+ if (current().type === 'EQUALS') {
312
+ consume('EQUALS');
313
+ if (current().type === 'STAR') {
314
+ consume('STAR');
315
+ attributes.push({
316
+ key,
317
+ operator: 'exists'
318
+ });
319
+ } else {
320
+ let value = '';
321
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
322
+ value = current().value;
323
+ consume();
324
+ } else {
325
+ throw new Error(`Expected attribute value, got ${current().type}`);
326
+ }
327
+ attributes.push({
328
+ key,
329
+ operator: 'equals',
330
+ value
331
+ });
332
+ }
333
+ } else if (current().type === 'CONTAINS_OP') {
334
+ consume('CONTAINS_OP');
335
+ let value = '';
336
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
337
+ value = current().value;
338
+ consume();
339
+ } else {
340
+ throw new Error(`Expected attribute value, got ${current().type}`);
341
+ }
342
+ attributes.push({
343
+ key,
344
+ operator: 'contains',
345
+ value
346
+ });
347
+ } else if (current().type === 'STARTS_WITH_OP') {
348
+ consume('STARTS_WITH_OP');
349
+ let value = '';
350
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
351
+ value = current().value;
352
+ consume();
353
+ } else {
354
+ throw new Error(`Expected attribute value, got ${current().type}`);
355
+ }
356
+ attributes.push({
357
+ key,
358
+ operator: 'startsWith',
359
+ value
360
+ });
361
+ } else if (current().type === 'ENDS_WITH_OP') {
362
+ consume('ENDS_WITH_OP');
363
+ let value = '';
364
+ if (current().type === 'ELEMENT' || current().type === 'IDENTIFIER' || current().type === 'STRING') {
365
+ value = current().value;
366
+ consume();
367
+ } else {
368
+ throw new Error(`Expected attribute value, got ${current().type}`);
369
+ }
370
+ attributes.push({
371
+ key,
372
+ operator: 'endsWith',
373
+ value
374
+ });
375
+ } else {
376
+ attributes.push({
377
+ key,
378
+ operator: 'exists'
379
+ });
380
+ }
381
+ consume('RBRACKET');
382
+ }
383
+ return attributes;
384
+ }
385
+ function parseElement() {
386
+ const token = consume('ELEMENT');
387
+ const node = {
388
+ kind: 'element',
389
+ element: token.value
390
+ };
391
+
392
+ // Check if this is html_comment and if it has attribute selectors
393
+ if (node.element === 'html_comment' && current().type === 'LBRACKET') {
394
+ node.htmlCommentAttrs = parseHtmlCommentAttributes();
395
+ }
396
+
397
+ // Check if this is link and if it has attribute selectors
398
+ if (node.element === 'link' && current().type === 'LBRACKET') {
399
+ node.linkAttrs = parseLinkAttributes();
400
+ }
401
+
402
+ // Check if this is image and if it has attribute selectors
403
+ if (node.element === 'image' && current().type === 'LBRACKET') {
404
+ node.imageAttrs = parseImageAttributes();
405
+ }
406
+ if (['STAR', 'PLUS', 'QUESTION', 'LBRACKET'].includes(current().type)) {
407
+ node.quantifier = parseQuantifier();
408
+ }
409
+ return node;
410
+ }
411
+ function parseGroup() {
412
+ consume('LPAREN');
413
+ const pattern = parseSequence();
414
+ consume('RPAREN');
415
+ const node = {
416
+ kind: 'group',
417
+ pattern
418
+ };
419
+ if (['STAR', 'PLUS', 'QUESTION', 'LBRACKET'].includes(current().type)) {
420
+ node.quantifier = parseQuantifier();
421
+ }
422
+ return node;
423
+ }
424
+ function parseList() {
425
+ consume('KEYWORD'); // consume 'list'
426
+ const node = {
427
+ kind: 'list'
428
+ };
429
+ if (current().type === 'LBRACE') {
430
+ consume('LBRACE');
431
+ if (current().type === 'KEYWORD' && current().value === 'item') {
432
+ consume('KEYWORD'); // consume 'item'
433
+
434
+ // Check for quantifier on item: item+, item*, item?, item[N], item[N-M]
435
+ if (['STAR', 'PLUS', 'QUESTION', 'LBRACKET'].includes(current().type)) {
436
+ node.itemCount = parseQuantifier();
437
+ }
438
+ if (current().type === 'COLON') {
439
+ consume('COLON');
440
+ node.itemStructure = parseSequence();
441
+ }
442
+ }
443
+ consume('RBRACE');
444
+ }
445
+ if (['STAR', 'PLUS', 'QUESTION', 'LBRACKET'].includes(current().type)) {
446
+ node.quantifier = parseQuantifier();
447
+ }
448
+ return node;
449
+ }
450
+ function parsePrimary() {
451
+ if (current().type === 'LPAREN') {
452
+ return parseGroup();
453
+ }
454
+ if (current().type === 'KEYWORD' && current().value === 'list') {
455
+ return parseList();
456
+ }
457
+ if (current().type === 'ELEMENT') {
458
+ return parseElement();
459
+ }
460
+ if (current().type === 'IDENTIFIER') {
461
+ throw new Error(`Invalid element: ${current().value}`);
462
+ }
463
+ throw new Error(`Unexpected token: ${current().type}`);
464
+ }
465
+ function parseAlternation() {
466
+ const choices = [parsePrimary()];
467
+ while (current().type === 'PIPE') {
468
+ consume('PIPE');
469
+ choices.push(parsePrimary());
470
+ }
471
+ if (choices.length === 1) {
472
+ return choices[0];
473
+ }
474
+ const node = {
475
+ kind: 'alternation',
476
+ choices
477
+ };
478
+ if (['STAR', 'PLUS', 'QUESTION', 'LBRACKET'].includes(current().type)) {
479
+ node.quantifier = parseQuantifier();
480
+ }
481
+ return node;
482
+ }
483
+ function parseSequence() {
484
+ const children = [parseAlternation()];
485
+ while (current().type === 'ARROW') {
486
+ consume('ARROW');
487
+ children.push(parseAlternation());
488
+ }
489
+ if (children.length === 1) {
490
+ return children[0];
491
+ }
492
+ return {
493
+ kind: 'sequence',
494
+ children
495
+ };
496
+ }
497
+ function parseStopCondition() {
498
+ if (current().type !== 'ELEMENT') {
499
+ throw new Error(`Expected a single element after '~', got ${current().type}`);
500
+ }
501
+ const token = consume('ELEMENT');
502
+ const stop = {
503
+ element: token.value
504
+ };
505
+ if (stop.element === 'html_comment' && current().type === 'LBRACKET') {
506
+ stop.htmlCommentAttrs = parseHtmlCommentAttributes();
507
+ }
508
+ if (stop.element === 'link' && current().type === 'LBRACKET') {
509
+ stop.linkAttrs = parseLinkAttributes();
510
+ }
511
+ if (stop.element === 'image' && current().type === 'LBRACKET') {
512
+ stop.imageAttrs = parseImageAttributes();
513
+ }
514
+ if (['STAR', 'PLUS', 'QUESTION'].includes(current().type) || isQuantifierBracket()) {
515
+ throw new Error("Quantifiers are not allowed on the '~' stop element");
516
+ }
517
+ return stop;
518
+ }
519
+ const result = parseSequence();
520
+ let stopAt;
521
+ if (current().type === 'TILDE') {
522
+ consume('TILDE');
523
+ stopAt = parseStopCondition();
524
+ }
525
+ if (current().type !== 'EOF') {
526
+ throw new Error('Unexpected token after pattern');
527
+ }
528
+ return {
529
+ pattern: result,
530
+ stopAt
531
+ };
532
+ }
533
+ //# sourceMappingURL=parser.js.map