@useinsider/guido 1.0.3-beta.ce3ed00 → 1.0.3-beta.cedc8cb
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -173
- package/dist/{src/@types → @types}/generic.d.ts +0 -15
- package/dist/{src/components → components}/Guido.vue.d.ts +1 -1
- package/dist/components/Guido.vue.js +10 -12
- package/dist/components/Guido.vue2.js +90 -67
- package/dist/components/organisms/header/LeftSlot.vue.js +1 -1
- package/dist/components/organisms/header/LeftSlot.vue2.js +15 -16
- package/dist/components/organisms/header/RightSlot.vue.js +11 -11
- package/dist/components/organisms/onboarding/NewVersionPopup.vue.js +9 -9
- package/dist/components/organisms/onboarding/NewVersionPopup.vue2.js +17 -30
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue.js +10 -12
- package/dist/components/organisms/onboarding/OnboardingWrapper.vue2.js +18 -19
- package/dist/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.d.ts +2 -0
- package/dist/components/organisms/unsubscribe/UnsubscribeWrapper.vue.d.ts +2 -0
- package/dist/composables/useApiErrorTracking.d.ts +26 -0
- package/dist/composables/useApiErrorTracking.js +120 -0
- package/dist/composables/useErrorTracking.d.ts +30 -0
- package/dist/composables/useErrorTracking.js +98 -0
- package/dist/composables/useHttp.js +89 -52
- package/dist/composables/useStripo.js +158 -57
- package/dist/composables/useStripoErrorCategory.d.ts +26 -0
- package/dist/composables/useStripoErrorCategory.js +86 -0
- package/dist/composables/useStripoSlackNotifier.d.ts +8 -0
- package/dist/composables/useStripoSlackNotifier.js +47 -0
- package/dist/config/migrator/index.js +6 -7
- package/dist/enums/defaults.js +8 -15
- package/dist/enums/extensions/recommendationBlock.js +2 -2
- package/dist/enums/onboarding.d.ts +1 -0
- package/dist/enums/onboarding.js +1 -2
- package/dist/{src/extensions → extensions}/Blocks/Checkbox/block.d.ts +0 -1
- package/dist/extensions/Blocks/Checkbox/block.js +2 -5
- package/dist/extensions/Blocks/Checkbox/extension.js +2 -2
- package/dist/extensions/Blocks/CouponBlock/extension.js +2 -2
- package/dist/{src/extensions → extensions}/Blocks/RadioButton/block.d.ts +0 -1
- package/dist/extensions/Blocks/RadioButton/block.js +2 -5
- package/dist/{src/extensions → extensions}/Blocks/Recommendation/block.d.ts +0 -1
- package/dist/extensions/Blocks/Recommendation/block.js +3 -6
- package/dist/{src/extensions → extensions}/Blocks/Recommendation/control.d.ts +0 -6
- package/dist/extensions/Blocks/Recommendation/control.js +40 -69
- package/dist/extensions/Blocks/Recommendation/extension.js +7 -42
- package/dist/extensions/Blocks/Recommendation/iconsRegistry.js +43 -43
- package/dist/extensions/Blocks/Recommendation/settingsPanel.js +22 -107
- package/dist/extensions/Blocks/Recommendation/template.d.ts +6 -0
- package/dist/extensions/Blocks/Recommendation/template.js +200 -0
- package/dist/{src/extensions → extensions}/Blocks/common-control.d.ts +5 -40
- package/dist/extensions/Blocks/common-control.js +60 -167
- package/dist/guido.css +1 -1
- package/dist/node_modules/@stripoinc/ui-editor-extensions/dist/esm/index.js +101 -343
- package/dist/services/recommendationApi.js +19 -13
- package/dist/services/slackNotificationService.d.ts +110 -0
- package/dist/services/slackNotificationService.js +167 -0
- package/dist/services/stripoApi.js +49 -19
- package/dist/services/stripoErrorDeduplicationService.d.ts +75 -0
- package/dist/services/stripoErrorDeduplicationService.js +91 -0
- package/dist/static/styles/components/narrow-panel.css.js +0 -10
- package/dist/static/styles/customEditorStyle.css.js +0 -5
- package/dist/{src/stores → stores}/config.d.ts +0 -7
- package/dist/utils/dateUtil.d.ts +1 -0
- package/dist/utils/dateUtil.js +3 -24
- package/dist/utils/genericUtil.js +8 -7
- package/package.json +3 -15
- package/dist/composables/useBlocksConfig.js +0 -48
- package/dist/config/migrator/recommendationMigrator.js +0 -293
- package/dist/enums/date.js +0 -6
- package/dist/extensions/Blocks/Items/block.js +0 -70
- package/dist/extensions/Blocks/Items/controls/button/link.js +0 -60
- package/dist/extensions/Blocks/Items/controls/cardComposition.js +0 -99
- package/dist/extensions/Blocks/Items/controls/image/link.js +0 -60
- package/dist/extensions/Blocks/Items/controls/index.js +0 -217
- package/dist/extensions/Blocks/Items/controls/name/trimming.js +0 -63
- package/dist/extensions/Blocks/Items/controls/price/currencyLocation.js +0 -100
- package/dist/extensions/Blocks/Items/controls/price/currencySymbol.js +0 -113
- package/dist/extensions/Blocks/Items/controls/price/formattedPrice.js +0 -69
- package/dist/extensions/Blocks/Items/controls/price/hideDiscount.js +0 -38
- package/dist/extensions/Blocks/Items/controls/settingsControl.js +0 -279
- package/dist/extensions/Blocks/Items/enums/controlEnums.js +0 -5
- package/dist/extensions/Blocks/Items/enums/productEnums.js +0 -181
- package/dist/extensions/Blocks/Items/enums/settingsEnums.js +0 -63
- package/dist/extensions/Blocks/Items/extension.js +0 -19
- package/dist/extensions/Blocks/Items/iconsRegistry.js +0 -32
- package/dist/extensions/Blocks/Items/items.css.js +0 -23
- package/dist/extensions/Blocks/Items/layouts/horizontal.html.js +0 -64
- package/dist/extensions/Blocks/Items/layouts/vertical.html.js +0 -66
- package/dist/extensions/Blocks/Items/settingsPanel.js +0 -106
- package/dist/extensions/Blocks/Items/store/items-block.js +0 -67
- package/dist/extensions/Blocks/Items/template.js +0 -108
- package/dist/extensions/Blocks/Recommendation/cardCompositionControl.js +0 -103
- package/dist/extensions/Blocks/Recommendation/constants.js +0 -5
- package/dist/extensions/Blocks/Recommendation/controls/button/align.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/border.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/borderRadius.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/color.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/fitToContent.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/fontFamily.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/margins.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/paddings.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/text.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/textSize.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/image/margins.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/image/size.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/align.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/background.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/color.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/fontFamily.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/paddings.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/size.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/name/style.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/align.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/background.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/color.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/paddings.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/size.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/oldPrice/style.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/align.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/background.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/color.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/fontFamily.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/paddings.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/size.js +0 -13
- package/dist/extensions/Blocks/Recommendation/controls/price/style.js +0 -13
- package/dist/extensions/Blocks/Recommendation/templates/blockTemplate.js +0 -160
- package/dist/extensions/Blocks/Recommendation/templates/migrationTemplate.js +0 -152
- package/dist/extensions/Blocks/Recommendation/templates/templateUtils.js +0 -180
- package/dist/extensions/Blocks/controlFactories.js +0 -223
- package/dist/package.json.js +0 -7
- package/dist/src/components/organisms/onboarding/NewVersionPopup.vue.d.ts +0 -4
- package/dist/src/components/organisms/onboarding/OnboardingWrapper.vue.d.ts +0 -4
- package/dist/src/composables/useBlocksConfig.d.ts +0 -11
- package/dist/src/config/migrator/recommendationMigrator.d.ts +0 -1
- package/dist/src/enums/date.d.ts +0 -4
- package/dist/src/enums/onboarding.d.ts +0 -2
- package/dist/src/extensions/Blocks/Items/block.d.ts +0 -12
- package/dist/src/extensions/Blocks/Items/controls/button/link.d.ts +0 -14
- package/dist/src/extensions/Blocks/Items/controls/cardComposition.d.ts +0 -20
- package/dist/src/extensions/Blocks/Items/controls/image/link.d.ts +0 -14
- package/dist/src/extensions/Blocks/Items/controls/index.d.ts +0 -501
- package/dist/src/extensions/Blocks/Items/controls/name/trimming.d.ts +0 -14
- package/dist/src/extensions/Blocks/Items/controls/price/currencyLocation.d.ts +0 -19
- package/dist/src/extensions/Blocks/Items/controls/price/currencySymbol.d.ts +0 -20
- package/dist/src/extensions/Blocks/Items/controls/price/formattedPrice.d.ts +0 -14
- package/dist/src/extensions/Blocks/Items/controls/price/hideDiscount.d.ts +0 -9
- package/dist/src/extensions/Blocks/Items/controls/settingsControl.d.ts +0 -42
- package/dist/src/extensions/Blocks/Items/enums/controlEnums.d.ts +0 -61
- package/dist/src/extensions/Blocks/Items/enums/productEnums.d.ts +0 -143
- package/dist/src/extensions/Blocks/Items/enums/settingsEnums.d.ts +0 -35
- package/dist/src/extensions/Blocks/Items/iconsRegistry.d.ts +0 -4
- package/dist/src/extensions/Blocks/Items/store/items-block.d.ts +0 -39
- package/dist/src/extensions/Blocks/Items/template.d.ts +0 -16
- package/dist/src/extensions/Blocks/Recommendation/cardCompositionControl.d.ts +0 -28
- package/dist/src/extensions/Blocks/Recommendation/constants.d.ts +0 -51
- package/dist/src/extensions/Blocks/Recommendation/controls/button/align.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/border.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/borderRadius.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/color.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/fitToContent.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/fontFamily.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/margins.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/paddings.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/text.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/textSize.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/button/textStyleAndFontColor.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/image/margins.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/image/size.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/align.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/background.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/color.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/fontFamily.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/paddings.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/size.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/name/style.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/align.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/background.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/color.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/fontFamily.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/paddings.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/size.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/oldPrice/style.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/align.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/background.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/color.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/fontFamily.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/paddings.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/size.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/controls/price/style.d.ts +0 -5
- package/dist/src/extensions/Blocks/Recommendation/templates/blockTemplate.d.ts +0 -16
- package/dist/src/extensions/Blocks/Recommendation/templates/migrationTemplate.d.ts +0 -16
- package/dist/src/extensions/Blocks/Recommendation/templates/templateUtils.d.ts +0 -44
- package/dist/src/extensions/Blocks/_Boilerplate/settingsPanel.d.ts +0 -4
- package/dist/src/extensions/Blocks/controlFactories.d.ts +0 -312
- package/dist/src/extensions/DynamicContent/extension.d.ts +0 -2
- package/dist/src/utils/dateUtil.d.ts +0 -22
- package/dist/{src/@types → @types}/events.d.ts +0 -0
- package/dist/{src/@types → @types}/save-as-template.d.ts +0 -0
- package/dist/{src/App.vue.d.ts → App.vue.d.ts} +0 -0
- package/dist/{src/components → components}/organisms/LoadingWrapper.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/base/Toaster.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/email-preview/PreviewContainer.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/email-preview/amp/AmpErrorModal.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/email-preview/amp/AmpToggle.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/email-preview/desktop-preview/DesktopPreview.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/email-preview/desktop-preview/EmailHeaderInfo.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/email-preview/desktop-preview/EmailSizeIndicator.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/email-preview/mobile-preview/ContentView.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/email-preview/mobile-preview/InboxView.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/email-preview/mobile-preview/MobilePreview.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/extensions/recommendation/FilterItem.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/extensions/recommendation/FilterSelectionDrawer.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/extensions/recommendation/Filters.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/extensions/recommendation/LogicAdapter.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/header/HeaderWrapper.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/header/LeftSlot.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/header/MiddleSlot.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/header/RightSlot.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/header/ViewOptions.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/header/version-history/RestoreButton.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/header/version-history/VersionHistory.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/header/version-history/VersionHistoryItem.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/header/version-history/ViewOptions.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/onboarding/AMPOnboarding.vue.d.ts +0 -0
- package/dist/{src/components → components}/organisms/onboarding/GenericOnboarding.vue.d.ts +0 -0
- package/dist/{src/components/organisms/onboarding/TextBlockOnboarding.vue.d.ts → components/organisms/onboarding/NewVersionPopup.vue.d.ts} +0 -0
- package/dist/{src/components/organisms/onboarding/VersionHistoryOnboarding.vue.d.ts → components/organisms/onboarding/OnboardingWrapper.vue.d.ts} +0 -0
- package/dist/{src/components/organisms/save-as-template/SaveAsTemplateDrawer.vue.d.ts → components/organisms/onboarding/TextBlockOnboarding.vue.d.ts} +0 -0
- package/dist/{src/components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.d.ts → components/organisms/onboarding/VersionHistoryOnboarding.vue.d.ts} +0 -0
- package/dist/{src/components/organisms/unsubscribe/UnsubscribePageSelection.vue.d.ts → components/organisms/save-as-template/SaveAsTemplateDrawer.vue.d.ts} +0 -0
- package/dist/{src/components/organisms/unsubscribe/UnsubscribeTypeSelection.vue.d.ts → components/organisms/unsubscribe/UnsubscribeBreadcrumb.vue.d.ts} +0 -0
- package/dist/{src/components/organisms/unsubscribe/UnsubscribeWrapper.vue.d.ts → components/organisms/unsubscribe/UnsubscribePageSelection.vue.d.ts} +0 -0
- package/dist/{src/components → components}/wrappers/WpDrawer.vue.d.ts +0 -0
- package/dist/{src/components → components}/wrappers/WpModal.vue.d.ts +1 -1
- /package/dist/{src/composables → composables}/useActionsApi.d.ts +0 -0
- /package/dist/{src/composables → composables}/useApiExample.d.ts +0 -0
- /package/dist/{src/composables → composables}/useCodeEditorApi.d.ts +0 -0
- /package/dist/{src/composables → composables}/useConfig.d.ts +0 -0
- /package/dist/{src/composables → composables}/useCustomInterfaceAppearance.d.ts +0 -0
- /package/dist/{src/composables → composables}/useDebounce.d.ts +0 -0
- /package/dist/{src/composables → composables}/useExport.d.ts +0 -0
- /package/dist/{src/composables → composables}/useGuidoActions.d.ts +0 -0
- /package/dist/{src/composables → composables}/useHtmlCompiler.d.ts +0 -0
- /package/dist/{src/composables → composables}/useHtmlValidator.d.ts +0 -0
- /package/dist/{src/composables → composables}/useHttp.d.ts +0 -0
- /package/dist/{src/composables → composables}/usePartner.d.ts +0 -0
- /package/dist/{src/composables → composables}/usePreviewMode.d.ts +0 -0
- /package/dist/{src/composables → composables}/useProvideInject.d.ts +0 -0
- /package/dist/{src/composables → composables}/useRecommendation.d.ts +0 -0
- /package/dist/{src/composables → composables}/useResponsivePreview.d.ts +0 -0
- /package/dist/{src/composables → composables}/useSave.d.ts +0 -0
- /package/dist/{src/composables → composables}/useStripo.d.ts +0 -0
- /package/dist/{src/composables → composables}/useStripoEventHandler.d.ts +0 -0
- /package/dist/{src/composables → composables}/useToaster.d.ts +0 -0
- /package/dist/{src/composables → composables}/useTranslations.d.ts +0 -0
- /package/dist/{src/composables → composables}/useValidation.d.ts +0 -0
- /package/dist/{src/composables → composables}/useVersionHistoryApi.d.ts +0 -0
- /package/dist/{src/composables → composables}/validators/saveAsTemplate.d.ts +0 -0
- /package/dist/{src/config → config}/compiler/htmlCompilerRules.d.ts +0 -0
- /package/dist/{src/config → config}/compiler/outlookCompilerRules.d.ts +0 -0
- /package/dist/{src/config → config}/compiler/recommendationCompilerRules.d.ts +0 -0
- /package/dist/{src/config → config}/compiler/socialCompilerRules.d.ts +0 -0
- /package/dist/{src/config → config}/compiler/unsubscribeCompilerRules.d.ts +0 -0
- /package/dist/{src/config → config}/migrator/checkboxMigrator.d.ts +0 -0
- /package/dist/{src/config → config}/migrator/couponBlockMigrator.d.ts +0 -0
- /package/dist/{src/config → config}/migrator/index.d.ts +0 -0
- /package/dist/{src/config → config}/migrator/radioButtonMigrator.d.ts +0 -0
- /package/dist/{src/config → config}/migrator/unsubscribeMigrator.d.ts +0 -0
- /package/dist/{src/enums → enums}/defaults.d.ts +0 -0
- /package/dist/{src/enums → enums}/displayConditions.d.ts +0 -0
- /package/dist/{src/enums → enums}/extensions/recommendationBlock.d.ts +0 -0
- /package/dist/{src/enums → enums}/html-validator.d.ts +0 -0
- /package/dist/{src/enums → enums}/preview.d.ts +0 -0
- /package/dist/{src/enums → enums}/recommendation.d.ts +0 -0
- /package/dist/{src/enums → enums}/toaster.d.ts +0 -0
- /package/dist/{src/enums → enums}/unsubscribe.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/control.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Checkbox/template.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/block.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/CouponBlock/template.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/RadioButton/control.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/Items → extensions/Blocks/RadioButton}/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/RadioButton/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/RadioButton/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/RadioButton/template.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/RadioButton → extensions/Blocks/Recommendation}/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Recommendation/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/Items → extensions/Blocks/Recommendation}/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Recommendation/store/recommendation.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Recommendation/utils/filterUtil.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/block.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/control.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/elements/preview.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/Recommendation → extensions/Blocks/Unsubscribe}/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/Recommendation → extensions/Blocks/Unsubscribe}/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/tagRegistry.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/template.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/utils/constants.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/Unsubscribe/utils/utils.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/block.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/control.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/Unsubscribe → extensions/Blocks/_Boilerplate}/extension.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/iconsRegistry.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/Unsubscribe → extensions/Blocks/_Boilerplate}/settingsPanel.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/Blocks/_Boilerplate/template.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/DynamicContent/dynamic-content-modal.d.ts +0 -0
- /package/dist/{src/extensions → extensions}/DynamicContent/dynamic-content.d.ts +0 -0
- /package/dist/{src/extensions/Blocks/_Boilerplate → extensions/DynamicContent}/extension.d.ts +0 -0
- /package/dist/{src/library.d.ts → library.d.ts} +0 -0
- /package/dist/{src/main.d.ts → main.d.ts} +0 -0
- /package/dist/{src/mock → mock}/api/auth.d.ts +0 -0
- /package/dist/{src/mock → mock}/api/custom-fonts.d.ts +0 -0
- /package/dist/{src/mock → mock}/api/default-template.d.ts +0 -0
- /package/dist/{src/mock → mock}/api/recommendation.d.ts +0 -0
- /package/dist/{src/mock → mock}/api/template-library.d.ts +0 -0
- /package/dist/{src/mock → mock}/api/unsubscribe.d.ts +0 -0
- /package/dist/{src/mock → mock}/api/user-modal-state.d.ts +0 -0
- /package/dist/{src/mock → mock}/api/validator.d.ts +0 -0
- /package/dist/{src/mock → mock}/browser.d.ts +0 -0
- /package/dist/{src/mock → mock}/handlers.d.ts +0 -0
- /package/dist/{src/services → services}/onboardingApi.d.ts +0 -0
- /package/dist/{src/services → services}/recommendationApi.d.ts +0 -0
- /package/dist/{src/services → services}/stripoApi.d.ts +0 -0
- /package/dist/{src/services → services}/templateLibraryApi.d.ts +0 -0
- /package/dist/{src/services → services}/unsubscribeApi.d.ts +0 -0
- /package/dist/{src/stores → stores}/dynamic-content.d.ts +0 -0
- /package/dist/{src/stores → stores}/editor.d.ts +0 -0
- /package/dist/{src/stores → stores}/onboarding.d.ts +0 -0
- /package/dist/{src/stores → stores}/preview.d.ts +0 -0
- /package/dist/{src/stores → stores}/recommendation.d.ts +0 -0
- /package/dist/{src/stores → stores}/save-as-template.d.ts +0 -0
- /package/dist/{src/stores → stores}/toaster.d.ts +0 -0
- /package/dist/{src/stores → stores}/unsubscribe.d.ts +0 -0
- /package/dist/{src/stores → stores}/version-history.d.ts +0 -0
- /package/dist/{src/utils → utils}/arrayUtil.d.ts +0 -0
- /package/dist/{src/utils → utils}/base64.d.ts +0 -0
- /package/dist/{src/utils → utils}/genericUtil.d.ts +0 -0
- /package/dist/{src/utils → utils}/htmlCompiler.d.ts +0 -0
- /package/dist/{src/utils → utils}/templatePreparation.d.ts +0 -0
- /package/dist/{src/utils → utils}/tooltipUtils.d.ts +0 -0
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { useHttp as c } from "../composables/useHttp.js";
|
|
2
2
|
import { URLS as a } from "../enums/extensions/recommendationBlock.js";
|
|
3
|
-
|
|
3
|
+
import { useEditorStore as m } from "../stores/editor.js";
|
|
4
|
+
import { replaceString as s } from "../utils/genericUtil.js";
|
|
5
|
+
const l = () => {
|
|
4
6
|
const { get: o } = c();
|
|
5
7
|
return {
|
|
6
8
|
fetchRecommendationCreateData: async () => {
|
|
9
|
+
const e = m();
|
|
7
10
|
try {
|
|
8
|
-
return (await o(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
return (await o(s(
|
|
12
|
+
"/newsletter/{id}/recommendations/get-campaign-create-data",
|
|
13
|
+
{ id: e.templateId }
|
|
14
|
+
))).data;
|
|
15
|
+
} catch (t) {
|
|
16
|
+
throw console.error("fetchUserModalState error:", t), t;
|
|
11
17
|
}
|
|
12
18
|
},
|
|
13
19
|
fetchRecommendationFilters: async () => {
|
|
@@ -18,20 +24,20 @@ const R = () => {
|
|
|
18
24
|
throw console.error("fetchRecommendationFilters error:", e), e;
|
|
19
25
|
}
|
|
20
26
|
},
|
|
21
|
-
fetchRecommendationProducts: async (e,
|
|
27
|
+
fetchRecommendationProducts: async (e, t) => {
|
|
22
28
|
try {
|
|
23
|
-
const
|
|
24
|
-
console.debug("🏁 Recommendation API Query:",
|
|
25
|
-
const
|
|
26
|
-
`${a.RECOMMENDATION_API_URL}/v2/${e}?${
|
|
29
|
+
const r = decodeURIComponent(new URLSearchParams(Object.entries(t)).toString());
|
|
30
|
+
console.debug("🏁 Recommendation API Query:", r);
|
|
31
|
+
const n = await o(
|
|
32
|
+
`${a.RECOMMENDATION_API_URL}/v2/${e}?${r}`
|
|
27
33
|
);
|
|
28
|
-
return (
|
|
29
|
-
} catch (
|
|
30
|
-
throw console.error("fetchRecommendationProducts error:",
|
|
34
|
+
return (n == null ? void 0 : n.data) ?? [];
|
|
35
|
+
} catch (r) {
|
|
36
|
+
throw console.error("fetchRecommendationProducts error:", r), r;
|
|
31
37
|
}
|
|
32
38
|
}
|
|
33
39
|
};
|
|
34
40
|
};
|
|
35
41
|
export {
|
|
36
|
-
|
|
42
|
+
l as useRecommendationApi
|
|
37
43
|
};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack notification payload structure
|
|
3
|
+
*/
|
|
4
|
+
export interface SlackNotificationPayload {
|
|
5
|
+
channel?: string;
|
|
6
|
+
username?: string;
|
|
7
|
+
icon_emoji?: string;
|
|
8
|
+
text?: string;
|
|
9
|
+
attachments?: SlackAttachment[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Slack attachment for formatted messages
|
|
13
|
+
*/
|
|
14
|
+
export interface SlackAttachment {
|
|
15
|
+
color?: string;
|
|
16
|
+
title?: string;
|
|
17
|
+
title_link?: string;
|
|
18
|
+
text?: string;
|
|
19
|
+
fields?: SlackField[];
|
|
20
|
+
footer?: string;
|
|
21
|
+
ts?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Slack field for structured data
|
|
25
|
+
*/
|
|
26
|
+
export interface SlackField {
|
|
27
|
+
title: string;
|
|
28
|
+
value: string;
|
|
29
|
+
short?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Slack error notification content
|
|
33
|
+
*/
|
|
34
|
+
export interface SlackErrorNotification {
|
|
35
|
+
title: string;
|
|
36
|
+
message: string;
|
|
37
|
+
errorType: string;
|
|
38
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
39
|
+
context?: Record<string, unknown>;
|
|
40
|
+
stackTrace?: string;
|
|
41
|
+
timestamp?: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Service for sending error notifications to Slack
|
|
45
|
+
* Used to alert team members about critical Stripo errors
|
|
46
|
+
*/
|
|
47
|
+
export declare class SlackNotificationService {
|
|
48
|
+
private webhookUrl;
|
|
49
|
+
private channel;
|
|
50
|
+
private defaultUsername;
|
|
51
|
+
private enabled;
|
|
52
|
+
constructor(webhookUrl?: string, options?: {
|
|
53
|
+
channel?: string;
|
|
54
|
+
username?: string;
|
|
55
|
+
enabled?: boolean;
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* Send an error notification to Slack
|
|
59
|
+
*/
|
|
60
|
+
sendErrorNotification(notification: SlackErrorNotification): Promise<boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* Send a critical error that requires immediate attention
|
|
63
|
+
*/
|
|
64
|
+
sendCriticalError(title: string, message: string, context?: Record<string, unknown>): Promise<boolean>;
|
|
65
|
+
/**
|
|
66
|
+
* Send a CORS error notification
|
|
67
|
+
*/
|
|
68
|
+
sendCorsErrorNotification(resourceUrl?: string, additionalContext?: Record<string, unknown>): Promise<boolean>;
|
|
69
|
+
/**
|
|
70
|
+
* Send a plugin load error notification
|
|
71
|
+
*/
|
|
72
|
+
sendPluginLoadErrorNotification(reason: string, additionalContext?: Record<string, unknown>): Promise<boolean>;
|
|
73
|
+
/**
|
|
74
|
+
* Build Slack message payload from error notification
|
|
75
|
+
*/
|
|
76
|
+
private buildErrorPayload;
|
|
77
|
+
/**
|
|
78
|
+
* Format field title for Slack (e.g., emailId -> Email ID)
|
|
79
|
+
*/
|
|
80
|
+
private formatFieldTitle;
|
|
81
|
+
/**
|
|
82
|
+
* Format field value for Slack display
|
|
83
|
+
*/
|
|
84
|
+
private formatFieldValue;
|
|
85
|
+
/**
|
|
86
|
+
* Check if notifications are enabled
|
|
87
|
+
*/
|
|
88
|
+
isEnabled(): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Update webhook URL
|
|
91
|
+
*/
|
|
92
|
+
setWebhookUrl(url: string): void;
|
|
93
|
+
/**
|
|
94
|
+
* Update channel
|
|
95
|
+
*/
|
|
96
|
+
setChannel(channel: string): void;
|
|
97
|
+
/**
|
|
98
|
+
* Enable/disable notifications
|
|
99
|
+
*/
|
|
100
|
+
setEnabled(enabled: boolean): void;
|
|
101
|
+
}
|
|
102
|
+
export declare const getSlackNotificationService: () => SlackNotificationService;
|
|
103
|
+
/**
|
|
104
|
+
* Initialize or reinitialize Slack notification service
|
|
105
|
+
*/
|
|
106
|
+
export declare const initializeSlackNotificationService: (webhookUrl?: string, options?: {
|
|
107
|
+
channel?: string;
|
|
108
|
+
username?: string;
|
|
109
|
+
enabled?: boolean;
|
|
110
|
+
}) => SlackNotificationService;
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
var d = Object.defineProperty;
|
|
2
|
+
var h = (t, e, r) => e in t ? d(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
|
|
3
|
+
var i = (t, e, r) => h(t, typeof e != "symbol" ? e + "" : e, r);
|
|
4
|
+
class u {
|
|
5
|
+
constructor(e, r) {
|
|
6
|
+
i(this, "webhookUrl");
|
|
7
|
+
i(this, "channel");
|
|
8
|
+
i(this, "defaultUsername");
|
|
9
|
+
i(this, "enabled");
|
|
10
|
+
this.webhookUrl = e || void 0 || "", this.channel = (r == null ? void 0 : r.channel) || "#errors", this.defaultUsername = (r == null ? void 0 : r.username) || "Guido Error Bot", this.enabled = (r == null ? void 0 : r.enabled) !== !1, this.webhookUrl || (console.warn("[SlackNotificationService] Webhook URL not configured, Slack notifications disabled"), this.enabled = !1);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Send an error notification to Slack
|
|
14
|
+
*/
|
|
15
|
+
async sendErrorNotification(e) {
|
|
16
|
+
if (!this.enabled || !this.webhookUrl)
|
|
17
|
+
return !1;
|
|
18
|
+
try {
|
|
19
|
+
const r = this.buildErrorPayload(e), a = await fetch(this.webhookUrl, {
|
|
20
|
+
method: "POST",
|
|
21
|
+
headers: {
|
|
22
|
+
"Content-Type": "application/json"
|
|
23
|
+
},
|
|
24
|
+
body: JSON.stringify(r)
|
|
25
|
+
});
|
|
26
|
+
return a.ok ? !0 : (console.error("[SlackNotificationService] Failed to send Slack notification:", a.statusText), !1);
|
|
27
|
+
} catch (r) {
|
|
28
|
+
return console.error("[SlackNotificationService] Error sending Slack notification:", r), !1;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Send a critical error that requires immediate attention
|
|
33
|
+
*/
|
|
34
|
+
async sendCriticalError(e, r, a) {
|
|
35
|
+
return this.sendErrorNotification({
|
|
36
|
+
title: e,
|
|
37
|
+
message: r,
|
|
38
|
+
errorType: "critical",
|
|
39
|
+
severity: "critical",
|
|
40
|
+
context: a,
|
|
41
|
+
timestamp: Date.now()
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Send a CORS error notification
|
|
46
|
+
*/
|
|
47
|
+
async sendCorsErrorNotification(e, r) {
|
|
48
|
+
return this.sendCriticalError(
|
|
49
|
+
"CORS Error in Stripo Email Editor",
|
|
50
|
+
"Failed to load Stripo resources due to CORS restrictions",
|
|
51
|
+
{
|
|
52
|
+
resourceUrl: e,
|
|
53
|
+
...r,
|
|
54
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Send a plugin load error notification
|
|
60
|
+
*/
|
|
61
|
+
async sendPluginLoadErrorNotification(e, r) {
|
|
62
|
+
return this.sendCriticalError(
|
|
63
|
+
"Stripo Plugin Failed to Load",
|
|
64
|
+
`Email editor initialization failed: ${e}`,
|
|
65
|
+
{
|
|
66
|
+
...r,
|
|
67
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Build Slack message payload from error notification
|
|
73
|
+
*/
|
|
74
|
+
buildErrorPayload(e) {
|
|
75
|
+
const a = {
|
|
76
|
+
critical: "#E74C3C",
|
|
77
|
+
// Red
|
|
78
|
+
high: "#E67E22",
|
|
79
|
+
// Orange
|
|
80
|
+
medium: "#F39C12",
|
|
81
|
+
// Yellow
|
|
82
|
+
low: "#3498DB"
|
|
83
|
+
// Blue
|
|
84
|
+
}[e.severity] || "#95A5A6", l = [
|
|
85
|
+
{
|
|
86
|
+
title: "Error Type",
|
|
87
|
+
value: e.errorType,
|
|
88
|
+
short: !0
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
title: "Severity",
|
|
92
|
+
value: e.severity.toUpperCase(),
|
|
93
|
+
short: !0
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
title: "Timestamp",
|
|
97
|
+
value: e.timestamp ? new Date(e.timestamp).toISOString() : (/* @__PURE__ */ new Date()).toISOString(),
|
|
98
|
+
short: !0
|
|
99
|
+
}
|
|
100
|
+
];
|
|
101
|
+
e.context && Object.entries(e.context).forEach(([n, c]) => {
|
|
102
|
+
l.length < 20 && l.push({
|
|
103
|
+
title: this.formatFieldTitle(n),
|
|
104
|
+
value: this.formatFieldValue(c),
|
|
105
|
+
short: !0
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
const s = {
|
|
109
|
+
color: a,
|
|
110
|
+
title: e.title,
|
|
111
|
+
text: e.message,
|
|
112
|
+
fields: l,
|
|
113
|
+
footer: "Guido Error Tracking",
|
|
114
|
+
ts: Math.floor((e.timestamp || Date.now()) / 1e3)
|
|
115
|
+
};
|
|
116
|
+
return e.stackTrace && (s.text = `${e.message}
|
|
117
|
+
\`\`\`${e.stackTrace}\`\`\``), {
|
|
118
|
+
channel: this.channel,
|
|
119
|
+
username: this.defaultUsername,
|
|
120
|
+
// eslint-disable-next-line camelcase
|
|
121
|
+
icon_emoji: ":warning:",
|
|
122
|
+
attachments: [s]
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Format field title for Slack (e.g., emailId -> Email ID)
|
|
127
|
+
*/
|
|
128
|
+
formatFieldTitle(e) {
|
|
129
|
+
return e.replace(/([A-Z])/g, " $1").replace(/^./, (r) => r.toUpperCase()).trim();
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Format field value for Slack display
|
|
133
|
+
*/
|
|
134
|
+
formatFieldValue(e) {
|
|
135
|
+
return e == null ? "(empty)" : typeof e == "object" ? JSON.stringify(e).slice(0, 500) : String(e).slice(0, 500);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Check if notifications are enabled
|
|
139
|
+
*/
|
|
140
|
+
isEnabled() {
|
|
141
|
+
return this.enabled;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Update webhook URL
|
|
145
|
+
*/
|
|
146
|
+
setWebhookUrl(e) {
|
|
147
|
+
this.webhookUrl = e, this.enabled = !!e;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Update channel
|
|
151
|
+
*/
|
|
152
|
+
setChannel(e) {
|
|
153
|
+
this.channel = e;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Enable/disable notifications
|
|
157
|
+
*/
|
|
158
|
+
setEnabled(e) {
|
|
159
|
+
this.enabled = e && !!this.webhookUrl;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
let o = null;
|
|
163
|
+
const S = () => (o || (o = new u()), o);
|
|
164
|
+
export {
|
|
165
|
+
u as SlackNotificationService,
|
|
166
|
+
S as getSlackNotificationService
|
|
167
|
+
};
|
|
@@ -1,25 +1,45 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { useApiErrorTracking as i } from "../composables/useApiErrorTracking.js";
|
|
2
|
+
import { useHttp as c } from "../composables/useHttp.js";
|
|
3
|
+
import { useToaster as p } from "../composables/useToaster.js";
|
|
4
|
+
const h = () => {
|
|
5
|
+
const { get: s } = c(), { handleError: n } = p(), { withParsingErrorTracking: a } = i();
|
|
5
6
|
return {
|
|
6
7
|
getToken: async () => {
|
|
7
8
|
try {
|
|
8
|
-
const t = Number(localStorage.getItem("ins-guido-test-instance")), { data: e } = await
|
|
9
|
-
return
|
|
9
|
+
const t = Number(localStorage.getItem("ins-guido-test-instance")), { data: e } = await s(`/stripo/get-user-token?test=${t}`);
|
|
10
|
+
return a(
|
|
11
|
+
() => {
|
|
12
|
+
var o;
|
|
13
|
+
if (!((o = e == null ? void 0 : e.body) != null && o.token))
|
|
14
|
+
throw new Error("Invalid token response: missing token in response body");
|
|
15
|
+
return e.body.token;
|
|
16
|
+
},
|
|
17
|
+
"/stripo/get-user-token",
|
|
18
|
+
e,
|
|
19
|
+
{ endpoint: "/stripo/get-user-token", operation: "getToken" }
|
|
20
|
+
);
|
|
10
21
|
} catch (t) {
|
|
11
|
-
return
|
|
22
|
+
return n(t, "Failed to fetch token"), "";
|
|
12
23
|
}
|
|
13
24
|
},
|
|
14
25
|
getCustomFonts: async () => {
|
|
15
26
|
try {
|
|
16
|
-
const { data: t = [] } = await
|
|
17
|
-
return
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
const { data: t = [] } = await s("/stripo/get-partner-custom-fonts");
|
|
28
|
+
return a(
|
|
29
|
+
() => {
|
|
30
|
+
if (!Array.isArray(t))
|
|
31
|
+
throw new Error("Invalid fonts response: expected array");
|
|
32
|
+
return t.map((r) => ({
|
|
33
|
+
...r,
|
|
34
|
+
active: !0
|
|
35
|
+
}));
|
|
36
|
+
},
|
|
37
|
+
"/stripo/get-partner-custom-fonts",
|
|
38
|
+
t,
|
|
39
|
+
{ endpoint: "/stripo/get-partner-custom-fonts", operation: "getCustomFonts" }
|
|
40
|
+
);
|
|
21
41
|
} catch (t) {
|
|
22
|
-
return
|
|
42
|
+
return n(t, "Failed to fetch custom fonts"), [];
|
|
23
43
|
}
|
|
24
44
|
},
|
|
25
45
|
getDefaultTemplate: async () => {
|
|
@@ -29,21 +49,31 @@ const m = () => {
|
|
|
29
49
|
forceRecreate: !0
|
|
30
50
|
};
|
|
31
51
|
try {
|
|
32
|
-
const { data: e } = await
|
|
52
|
+
const { data: e } = await s("/stripo/default-template");
|
|
33
53
|
try {
|
|
34
54
|
return {
|
|
35
|
-
...
|
|
55
|
+
...a(
|
|
56
|
+
() => {
|
|
57
|
+
const o = JSON.parse(e);
|
|
58
|
+
if (!o.html)
|
|
59
|
+
throw new Error("Invalid template response: missing html field");
|
|
60
|
+
return o;
|
|
61
|
+
},
|
|
62
|
+
"/stripo/default-template",
|
|
63
|
+
e,
|
|
64
|
+
{ endpoint: "/stripo/default-template", operation: "getDefaultTemplate" }
|
|
65
|
+
),
|
|
36
66
|
forceRecreate: !0
|
|
37
67
|
};
|
|
38
|
-
} catch {
|
|
39
|
-
return t;
|
|
68
|
+
} catch (r) {
|
|
69
|
+
return r instanceof Error && !r.message.includes("Invalid template") && n(r, "Failed to parse template as JSON"), t;
|
|
40
70
|
}
|
|
41
71
|
} catch (e) {
|
|
42
|
-
return
|
|
72
|
+
return n(e, "Failed to fetch default template"), t;
|
|
43
73
|
}
|
|
44
74
|
}
|
|
45
75
|
};
|
|
46
76
|
};
|
|
47
77
|
export {
|
|
48
|
-
|
|
78
|
+
h as useStripoApi
|
|
49
79
|
};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service for handling Stripo error deduplication locally in Guido
|
|
3
|
+
*
|
|
4
|
+
* IMPORTANT: These errors are Guido's responsibility, not consuming teams'
|
|
5
|
+
* - Errors are caught and handled within Guido
|
|
6
|
+
* - Slack alerts notify Guido team to take action
|
|
7
|
+
* - Do NOT propagate errors to consuming teams' error tracking
|
|
8
|
+
* - Do NOT require backend involvement (errors are client-side)
|
|
9
|
+
*
|
|
10
|
+
* This keeps Stripo integration issues isolated to Guido's systems
|
|
11
|
+
*/
|
|
12
|
+
export interface StripoErrorDuplication {
|
|
13
|
+
errorType: string;
|
|
14
|
+
errorMessage: string;
|
|
15
|
+
errorCategory: string;
|
|
16
|
+
context: {
|
|
17
|
+
emailId?: string;
|
|
18
|
+
userId?: string;
|
|
19
|
+
environment?: string;
|
|
20
|
+
timestamp: string;
|
|
21
|
+
[key: string]: unknown;
|
|
22
|
+
};
|
|
23
|
+
reportedAt: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Service for deduplicating Stripo error alerts locally in Guido
|
|
27
|
+
* Prevents duplicate Slack notifications for the same error within a session
|
|
28
|
+
*
|
|
29
|
+
* Errors are handled entirely on the FE:
|
|
30
|
+
* - Slack notification alerts Guido team immediately (first occurrence)
|
|
31
|
+
* - Duplicate alerts suppressed within same session
|
|
32
|
+
* - Sentry/FullStory logs for analysis
|
|
33
|
+
* - No backend endpoint required
|
|
34
|
+
* - No propagation to consuming teams
|
|
35
|
+
*/
|
|
36
|
+
export declare class StripoErrorDeduplicationService {
|
|
37
|
+
private reportedErrors;
|
|
38
|
+
constructor();
|
|
39
|
+
/**
|
|
40
|
+
* Track an error locally to prevent duplicate Slack alerts
|
|
41
|
+
* Only sends Slack alert once per unique error within the same session
|
|
42
|
+
*/
|
|
43
|
+
trackError(errorData: StripoErrorDuplication): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Track plugin load error locally (CORS, script failure, timeout)
|
|
46
|
+
*/
|
|
47
|
+
trackPluginLoadError(errorMessage: string, context?: Record<string, unknown>): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Track CORS error locally
|
|
50
|
+
*/
|
|
51
|
+
trackCorsError(errorMessage: string, context?: Record<string, unknown>): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Track authentication error locally (token refresh failure)
|
|
54
|
+
* Tracks it, but Slack notifier decides whether to alert based on token expiration
|
|
55
|
+
*/
|
|
56
|
+
trackAuthenticationError(errorMessage: string, context?: Record<string, unknown>): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Generate unique deduplication key for error
|
|
59
|
+
* Format: "errorType:emailId:userId" to allow same error on different emails
|
|
60
|
+
*/
|
|
61
|
+
private getDeduplicationKey;
|
|
62
|
+
/**
|
|
63
|
+
* Clear tracked errors (for testing or session reset)
|
|
64
|
+
*/
|
|
65
|
+
clearTrackedErrors(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Get count of errors tracked in this session
|
|
68
|
+
*/
|
|
69
|
+
getTrackedErrorCount(): number;
|
|
70
|
+
}
|
|
71
|
+
export declare const getStripoErrorDeduplicationService: () => StripoErrorDeduplicationService;
|
|
72
|
+
/**
|
|
73
|
+
* Reset tracked errors (useful for testing or session reset)
|
|
74
|
+
*/
|
|
75
|
+
export declare const resetStripoErrorDeduplicationService: () => void;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
var c = Object.defineProperty;
|
|
2
|
+
var a = (e, r, t) => r in e ? c(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
|
|
3
|
+
var n = (e, r, t) => a(e, typeof r != "symbol" ? r + "" : r, t);
|
|
4
|
+
class s {
|
|
5
|
+
constructor() {
|
|
6
|
+
n(this, "reportedErrors", /* @__PURE__ */ new Set());
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Track an error locally to prevent duplicate Slack alerts
|
|
10
|
+
* Only sends Slack alert once per unique error within the same session
|
|
11
|
+
*/
|
|
12
|
+
trackError(r) {
|
|
13
|
+
const t = this.getDeduplicationKey(r);
|
|
14
|
+
return this.reportedErrors.has(t) ? !1 : (this.reportedErrors.add(t), !0);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Track plugin load error locally (CORS, script failure, timeout)
|
|
18
|
+
*/
|
|
19
|
+
trackPluginLoadError(r, t) {
|
|
20
|
+
return this.trackError({
|
|
21
|
+
errorType: "plugin_load_error",
|
|
22
|
+
errorMessage: r,
|
|
23
|
+
errorCategory: "critical",
|
|
24
|
+
context: {
|
|
25
|
+
...t,
|
|
26
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
27
|
+
environment: "production"
|
|
28
|
+
},
|
|
29
|
+
reportedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Track CORS error locally
|
|
34
|
+
*/
|
|
35
|
+
trackCorsError(r, t) {
|
|
36
|
+
return this.trackError({
|
|
37
|
+
errorType: "cors_error",
|
|
38
|
+
errorMessage: r,
|
|
39
|
+
errorCategory: "handled",
|
|
40
|
+
context: {
|
|
41
|
+
...t,
|
|
42
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
43
|
+
environment: "production"
|
|
44
|
+
},
|
|
45
|
+
reportedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Track authentication error locally (token refresh failure)
|
|
50
|
+
* Tracks it, but Slack notifier decides whether to alert based on token expiration
|
|
51
|
+
*/
|
|
52
|
+
trackAuthenticationError(r, t) {
|
|
53
|
+
return this.trackError({
|
|
54
|
+
errorType: "authentication_error",
|
|
55
|
+
errorMessage: r,
|
|
56
|
+
errorCategory: "critical",
|
|
57
|
+
context: {
|
|
58
|
+
...t,
|
|
59
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
60
|
+
environment: "production"
|
|
61
|
+
},
|
|
62
|
+
reportedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Generate unique deduplication key for error
|
|
67
|
+
* Format: "errorType:emailId:userId" to allow same error on different emails
|
|
68
|
+
*/
|
|
69
|
+
getDeduplicationKey(r) {
|
|
70
|
+
const t = r.context.emailId || "unknown", i = r.context.userId || "unknown";
|
|
71
|
+
return `${r.errorType}:${t}:${i}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Clear tracked errors (for testing or session reset)
|
|
75
|
+
*/
|
|
76
|
+
clearTrackedErrors() {
|
|
77
|
+
this.reportedErrors.clear();
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get count of errors tracked in this session
|
|
81
|
+
*/
|
|
82
|
+
getTrackedErrorCount() {
|
|
83
|
+
return this.reportedErrors.size;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
let o = null;
|
|
87
|
+
const u = () => (o || (o = new s()), o);
|
|
88
|
+
export {
|
|
89
|
+
s as StripoErrorDeduplicationService,
|
|
90
|
+
u as getStripoErrorDeduplicationService
|
|
91
|
+
};
|
|
@@ -32,16 +32,6 @@ ue-stripe-thumb:hover:not(.disabled),
|
|
|
32
32
|
padding: 0 16px 16px;
|
|
33
33
|
grid-row-gap: 16px;
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
/* TODO: will be removed after we find another way to hide stripo custom modules */
|
|
37
|
-
#moduleTab_tab1,
|
|
38
|
-
button[aria-label="Default Modules"],
|
|
39
|
-
button[aria-controls="moduleTab_tab1_content"],
|
|
40
|
-
#moduleTab_tab2,
|
|
41
|
-
button[aria-label="Pre-Built AMP"],
|
|
42
|
-
button[aria-controls="moduleTab_tab2_content"] {
|
|
43
|
-
display: none !important;
|
|
44
|
-
}
|
|
45
35
|
`;
|
|
46
36
|
export {
|
|
47
37
|
o as default
|
|
@@ -18,11 +18,6 @@ const n = `.esd-x,
|
|
|
18
18
|
border-radius: 0;
|
|
19
19
|
box-shadow: none;
|
|
20
20
|
}
|
|
21
|
-
.ins-product-cart ue-node-actions,
|
|
22
|
-
.ins-recommendation-v3-block-v2 .product-attribute-cell ue-node-actions,
|
|
23
|
-
.ins-recommendation-v3-block-v2 .product-attribute-cell ue-node-panel {
|
|
24
|
-
display: none !important;
|
|
25
|
-
}
|
|
26
21
|
`;
|
|
27
22
|
export {
|
|
28
23
|
n as default
|
|
@@ -64,7 +64,6 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"config", S
|
|
|
64
64
|
senderName: string;
|
|
65
65
|
subject: string;
|
|
66
66
|
};
|
|
67
|
-
migrationDate: number;
|
|
68
67
|
partner?: {
|
|
69
68
|
partnerName: string;
|
|
70
69
|
productType: number;
|
|
@@ -77,13 +76,7 @@ export declare const useConfigStore: import("pinia").StoreDefinition<"config", S
|
|
|
77
76
|
dynamicContent?: boolean | undefined;
|
|
78
77
|
saveAsTemplate?: boolean | undefined;
|
|
79
78
|
versionHistory?: boolean | undefined;
|
|
80
|
-
testMessage?: boolean | undefined;
|
|
81
79
|
} | undefined;
|
|
82
|
-
blocks?: {
|
|
83
|
-
excludeDefaults?: import("@@/Types/generic").GuidoBlockType[] | undefined;
|
|
84
|
-
includeCustoms?: import("@@/Types/generic").GuidoCustomBlockType[] | undefined;
|
|
85
|
-
} | undefined;
|
|
86
|
-
backButtonLabel?: string | undefined;
|
|
87
80
|
};
|
|
88
81
|
templateConfig?: {
|
|
89
82
|
preselectedDynamicContentList?: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const formatPatchDate: (timestamp: number) => string;
|
package/dist/utils/dateUtil.js
CHANGED
|
@@ -1,19 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
const m = (t) => t ? t instanceof Date ? t : typeof t == "string" ? t.length === 10 ? new Date(Number(t) * 1e3) : new Date(t) : typeof t == "number" ? t.toString().length === 10 ? new Date(t * 1e3) : new Date(t) : /* @__PURE__ */ new Date() : /* @__PURE__ */ new Date(), s = () => {
|
|
3
|
-
const t = window.l10n;
|
|
4
|
-
return (t == null ? void 0 : t.locale) === a ? r : (t == null ? void 0 : t.locale) || r;
|
|
5
|
-
}, u = new Intl.DateTimeFormat().resolvedOptions().timeZone, f = () => {
|
|
6
|
-
const t = window.l10n;
|
|
7
|
-
return (t == null ? void 0 : t.timezone) || u || c;
|
|
8
|
-
}, D = (t, e = s(), n = f()) => {
|
|
9
|
-
const o = {
|
|
10
|
-
year: "numeric",
|
|
11
|
-
month: "2-digit",
|
|
12
|
-
day: "2-digit",
|
|
13
|
-
timeZone: n
|
|
14
|
-
}, i = m(t);
|
|
15
|
-
return new Intl.DateTimeFormat(e, o).format(i);
|
|
16
|
-
}, T = (t) => {
|
|
1
|
+
const o = (t) => {
|
|
17
2
|
if (!t)
|
|
18
3
|
return "";
|
|
19
4
|
const e = new Date(t);
|
|
@@ -25,13 +10,7 @@ const m = (t) => t ? t instanceof Date ? t : typeof t == "string" ? t.length ===
|
|
|
25
10
|
second: "2-digit",
|
|
26
11
|
hour12: !1
|
|
27
12
|
}).format(e);
|
|
28
|
-
}
|
|
13
|
+
};
|
|
29
14
|
export {
|
|
30
|
-
|
|
31
|
-
T as formatPatchDate,
|
|
32
|
-
D as formatShortDate,
|
|
33
|
-
h as isAfterDate,
|
|
34
|
-
u as localTz,
|
|
35
|
-
s as locale,
|
|
36
|
-
f as timezone
|
|
15
|
+
o as formatPatchDate
|
|
37
16
|
};
|