valtech-components 2.0.819 → 2.0.821
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/fesm2022/valtech-components.mjs +1 -1
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/package.json +1 -1
- package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +0 -94
- package/esm2022/lib/components/atoms/avatar/types.mjs +0 -2
- package/esm2022/lib/components/atoms/box/box.component.mjs +0 -88
- package/esm2022/lib/components/atoms/box/types.mjs +0 -2
- package/esm2022/lib/components/atoms/button/button.component.mjs +0 -174
- package/esm2022/lib/components/atoms/button/factory.mjs +0 -217
- package/esm2022/lib/components/atoms/container/container.component.mjs +0 -52
- package/esm2022/lib/components/atoms/container/types.mjs +0 -2
- package/esm2022/lib/components/atoms/countdown/countdown.component.mjs +0 -340
- package/esm2022/lib/components/atoms/countdown/types.mjs +0 -27
- package/esm2022/lib/components/atoms/display/display.component.mjs +0 -51
- package/esm2022/lib/components/atoms/display/types.mjs +0 -2
- package/esm2022/lib/components/atoms/divider/divider.component.mjs +0 -27
- package/esm2022/lib/components/atoms/divider/types.mjs +0 -2
- package/esm2022/lib/components/atoms/fab/fab.component.mjs +0 -190
- package/esm2022/lib/components/atoms/fab/types.mjs +0 -2
- package/esm2022/lib/components/atoms/glass/glass.component.mjs +0 -125
- package/esm2022/lib/components/atoms/glass/types.mjs +0 -2
- package/esm2022/lib/components/atoms/glow/glow.component.mjs +0 -95
- package/esm2022/lib/components/atoms/glow/types.mjs +0 -2
- package/esm2022/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.mjs +0 -82
- package/esm2022/lib/components/atoms/horizontal-scroll/types.mjs +0 -2
- package/esm2022/lib/components/atoms/href/href.component.mjs +0 -62
- package/esm2022/lib/components/atoms/href/types.mjs +0 -2
- package/esm2022/lib/components/atoms/icon/icon.component.mjs +0 -29
- package/esm2022/lib/components/atoms/icon/types.mjs +0 -2
- package/esm2022/lib/components/atoms/image/image.component.mjs +0 -507
- package/esm2022/lib/components/atoms/image/types.mjs +0 -2
- package/esm2022/lib/components/atoms/pattern/motifs.mjs +0 -147
- package/esm2022/lib/components/atoms/pattern/pattern.component.mjs +0 -178
- package/esm2022/lib/components/atoms/pattern/types.mjs +0 -2
- package/esm2022/lib/components/atoms/price-tag/price-tag.component.mjs +0 -235
- package/esm2022/lib/components/atoms/price-tag/types.mjs +0 -15
- package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +0 -91
- package/esm2022/lib/components/atoms/progress-bar/types.mjs +0 -2
- package/esm2022/lib/components/atoms/progress-ring/progress-ring.component.mjs +0 -149
- package/esm2022/lib/components/atoms/progress-ring/types.mjs +0 -2
- package/esm2022/lib/components/atoms/qr-code/qr-code.component.mjs +0 -394
- package/esm2022/lib/components/atoms/qr-code/types.mjs +0 -2
- package/esm2022/lib/components/atoms/rights-footer/rights-footer.component.mjs +0 -108
- package/esm2022/lib/components/atoms/rights-footer/types.mjs +0 -2
- package/esm2022/lib/components/atoms/skeleton/skeleton.component.mjs +0 -193
- package/esm2022/lib/components/atoms/skeleton/types.mjs +0 -13
- package/esm2022/lib/components/atoms/text/text.component.mjs +0 -132
- package/esm2022/lib/components/atoms/text/types.mjs +0 -2
- package/esm2022/lib/components/atoms/title/title.component.mjs +0 -68
- package/esm2022/lib/components/atoms/title/types.mjs +0 -22
- package/esm2022/lib/components/atoms/user-avatar/types.mjs +0 -2
- package/esm2022/lib/components/atoms/user-avatar/user-avatar.component.mjs +0 -209
- package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +0 -120
- package/esm2022/lib/components/molecules/accordion/types.mjs +0 -2
- package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +0 -273
- package/esm2022/lib/components/molecules/action-card/types.mjs +0 -11
- package/esm2022/lib/components/molecules/action-header/action-header.component.mjs +0 -55
- package/esm2022/lib/components/molecules/action-header/types.mjs +0 -2
- package/esm2022/lib/components/molecules/ad-slot/ad-slot.component.mjs +0 -274
- package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +0 -119
- package/esm2022/lib/components/molecules/alert-box/types.mjs +0 -2
- package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +0 -130
- package/esm2022/lib/components/molecules/breadcrumb/types.mjs +0 -2
- package/esm2022/lib/components/molecules/button-group/button-group.component.mjs +0 -63
- package/esm2022/lib/components/molecules/button-group/types.mjs +0 -2
- package/esm2022/lib/components/molecules/card/card.component.mjs +0 -450
- package/esm2022/lib/components/molecules/card/types.mjs +0 -16
- package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +0 -82
- package/esm2022/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.mjs +0 -79
- package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +0 -166
- package/esm2022/lib/components/molecules/chip-group/types.mjs +0 -2
- package/esm2022/lib/components/molecules/code-display/code-display.component.mjs +0 -115
- package/esm2022/lib/components/molecules/code-display/types.mjs +0 -2
- package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +0 -49
- package/esm2022/lib/components/molecules/command-display/types.mjs +0 -2
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +0 -618
- package/esm2022/lib/components/molecules/comment/types.mjs +0 -2
- package/esm2022/lib/components/molecules/comment-input/comment-input.component.mjs +0 -41
- package/esm2022/lib/components/molecules/comment-input/types.mjs +0 -2
- package/esm2022/lib/components/molecules/content-loader/content-loader.component.mjs +0 -42
- package/esm2022/lib/components/molecules/content-loader/types.mjs +0 -2
- package/esm2022/lib/components/molecules/content-reaction/content-reaction.component.mjs +0 -210
- package/esm2022/lib/components/molecules/content-reaction/types.mjs +0 -2
- package/esm2022/lib/components/molecules/currency-input/currency-input.component.mjs +0 -347
- package/esm2022/lib/components/molecules/currency-input/types.mjs +0 -18
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +0 -148
- package/esm2022/lib/components/molecules/date-input/types.mjs +0 -2
- package/esm2022/lib/components/molecules/date-range-input/date-range-input.component.mjs +0 -416
- package/esm2022/lib/components/molecules/date-range-input/types.mjs +0 -2
- package/esm2022/lib/components/molecules/docs-api-table/docs-api-table.component.mjs +0 -222
- package/esm2022/lib/components/molecules/docs-api-table/types.mjs +0 -11
- package/esm2022/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.mjs +0 -144
- package/esm2022/lib/components/molecules/docs-breadcrumb/types.mjs +0 -2
- package/esm2022/lib/components/molecules/docs-callout/docs-callout.component.mjs +0 -60
- package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +0 -249
- package/esm2022/lib/components/molecules/docs-code-example/types.mjs +0 -2
- package/esm2022/lib/components/molecules/docs-nav-links/docs-nav-links.component.mjs +0 -140
- package/esm2022/lib/components/molecules/docs-nav-links/types.mjs +0 -2
- package/esm2022/lib/components/molecules/docs-search/docs-search.component.mjs +0 -268
- package/esm2022/lib/components/molecules/docs-search/types.mjs +0 -2
- package/esm2022/lib/components/molecules/docs-section/docs-section.component.mjs +0 -85
- package/esm2022/lib/components/molecules/docs-section/types.mjs +0 -2
- package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +0 -68
- package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +0 -77
- package/esm2022/lib/components/molecules/expandable-text/types.mjs +0 -2
- package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +0 -179
- package/esm2022/lib/components/molecules/features-list/types.mjs +0 -11
- package/esm2022/lib/components/molecules/feedback-form/feedback-form.component.mjs +0 -354
- package/esm2022/lib/components/molecules/feedback-form/types.mjs +0 -2
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +0 -90
- package/esm2022/lib/components/molecules/file-input/types.mjs +0 -2
- package/esm2022/lib/components/molecules/footer-links/footer-links.component.mjs +0 -391
- package/esm2022/lib/components/molecules/footer-links/types.mjs +0 -2
- package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +0 -314
- package/esm2022/lib/components/molecules/glow-card/types.mjs +0 -11
- package/esm2022/lib/components/molecules/hint/hint.component.mjs +0 -90
- package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +0 -28
- package/esm2022/lib/components/molecules/image-crop/image-crop.component.mjs +0 -174
- package/esm2022/lib/components/molecules/image-crop/index.mjs +0 -2
- package/esm2022/lib/components/molecules/info/info.component.mjs +0 -49
- package/esm2022/lib/components/molecules/info/types.mjs +0 -2
- package/esm2022/lib/components/molecules/language-selector/language-selector.component.mjs +0 -221
- package/esm2022/lib/components/molecules/language-selector/types.mjs +0 -2
- package/esm2022/lib/components/molecules/layered-card/layered-card.component.mjs +0 -104
- package/esm2022/lib/components/molecules/layered-card/types.mjs +0 -2
- package/esm2022/lib/components/molecules/link/link.component.mjs +0 -64
- package/esm2022/lib/components/molecules/link/types.mjs +0 -2
- package/esm2022/lib/components/molecules/linked-providers/linked-providers.component.mjs +0 -236
- package/esm2022/lib/components/molecules/linked-providers/types.mjs +0 -27
- package/esm2022/lib/components/molecules/links-accordion/links-accordion.component.mjs +0 -203
- package/esm2022/lib/components/molecules/links-accordion/types.mjs +0 -2
- package/esm2022/lib/components/molecules/links-cake/links-cake.component.mjs +0 -51
- package/esm2022/lib/components/molecules/links-cake/types.mjs +0 -2
- package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +0 -488
- package/esm2022/lib/components/molecules/notes-box/notes-box.component.mjs +0 -92
- package/esm2022/lib/components/molecules/notes-box/types.mjs +0 -2
- package/esm2022/lib/components/molecules/number-from-to/number-from-to.component.mjs +0 -143
- package/esm2022/lib/components/molecules/number-from-to/types.mjs +0 -2
- package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +0 -34
- package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +0 -379
- package/esm2022/lib/components/molecules/number-stepper/types.mjs +0 -2
- package/esm2022/lib/components/molecules/page-links/page-links.component.mjs +0 -150
- package/esm2022/lib/components/molecules/page-links/types.mjs +0 -2
- package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +0 -253
- package/esm2022/lib/components/molecules/pagination/types.mjs +0 -2
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +0 -93
- package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +0 -365
- package/esm2022/lib/components/molecules/phone-input/types.mjs +0 -19
- package/esm2022/lib/components/molecules/pill/pill.component.mjs +0 -202
- package/esm2022/lib/components/molecules/pill/types.mjs +0 -2
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +0 -78
- package/esm2022/lib/components/molecules/pin-input/types.mjs +0 -2
- package/esm2022/lib/components/molecules/plain-code-box/plain-code-box.component.mjs +0 -82
- package/esm2022/lib/components/molecules/plain-code-box/types.mjs +0 -2
- package/esm2022/lib/components/molecules/popover-selector/popover-selector.component.mjs +0 -188
- package/esm2022/lib/components/molecules/popover-selector/types.mjs +0 -2
- package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +0 -105
- package/esm2022/lib/components/molecules/progress-status/types.mjs +0 -2
- package/esm2022/lib/components/molecules/prompter/prompter.component.mjs +0 -85
- package/esm2022/lib/components/molecules/prompter/types.mjs +0 -2
- package/esm2022/lib/components/molecules/quote-box/quote-box.component.mjs +0 -155
- package/esm2022/lib/components/molecules/radio-input/radio-input.component.mjs +0 -52
- package/esm2022/lib/components/molecules/range-input/range-input.component.mjs +0 -127
- package/esm2022/lib/components/molecules/range-input/types.mjs +0 -2
- package/esm2022/lib/components/molecules/rating/rating.component.mjs +0 -166
- package/esm2022/lib/components/molecules/rating/types.mjs +0 -2
- package/esm2022/lib/components/molecules/refresher/refresher.component.mjs +0 -275
- package/esm2022/lib/components/molecules/refresher/types.mjs +0 -15
- package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +0 -127
- package/esm2022/lib/components/molecules/searchbar/types.mjs +0 -2
- package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +0 -129
- package/esm2022/lib/components/molecules/segment-control/types.mjs +0 -2
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +0 -148
- package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +0 -434
- package/esm2022/lib/components/molecules/share-buttons/share-buttons.component.mjs +0 -274
- package/esm2022/lib/components/molecules/share-buttons/types.mjs +0 -88
- package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +0 -211
- package/esm2022/lib/components/molecules/stats-card/types.mjs +0 -2
- package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +0 -242
- package/esm2022/lib/components/molecules/stepper/types.mjs +0 -2
- package/esm2022/lib/components/molecules/swipe-carousel/swipe-carousel.component.mjs +0 -206
- package/esm2022/lib/components/molecules/swipe-carousel/types.mjs +0 -2
- package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +0 -139
- package/esm2022/lib/components/molecules/tabs/types.mjs +0 -2
- package/esm2022/lib/components/molecules/testimonial-card/testimonial-card.component.mjs +0 -138
- package/esm2022/lib/components/molecules/testimonial-card/types.mjs +0 -2
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +0 -77
- package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +0 -213
- package/esm2022/lib/components/molecules/textarea-input/types.mjs +0 -2
- package/esm2022/lib/components/molecules/timeline/timeline.component.mjs +0 -140
- package/esm2022/lib/components/molecules/timeline/types.mjs +0 -2
- package/esm2022/lib/components/molecules/title-block/title-block.component.mjs +0 -102
- package/esm2022/lib/components/molecules/title-block/types.mjs +0 -2
- package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +0 -93
- package/esm2022/lib/components/molecules/toggle-input/types.mjs +0 -2
- package/esm2022/lib/components/molecules/update-banner/types.mjs +0 -42
- package/esm2022/lib/components/molecules/update-banner/update-banner.component.mjs +0 -243
- package/esm2022/lib/components/molecules/username-input/types.mjs +0 -2
- package/esm2022/lib/components/molecules/username-input/username-input.component.mjs +0 -295
- package/esm2022/lib/components/organisms/article/article.component.mjs +0 -578
- package/esm2022/lib/components/organisms/article/types.mjs +0 -183
- package/esm2022/lib/components/organisms/avatar-upload/avatar-upload.component.mjs +0 -325
- package/esm2022/lib/components/organisms/avatar-upload/types.mjs +0 -15
- package/esm2022/lib/components/organisms/banner/banner.component.mjs +0 -111
- package/esm2022/lib/components/organisms/banner/types.mjs +0 -2
- package/esm2022/lib/components/organisms/bottom-nav/bottom-nav.component.mjs +0 -383
- package/esm2022/lib/components/organisms/bottom-nav/types.mjs +0 -19
- package/esm2022/lib/components/organisms/cards-carousel/cards-carousel.component.mjs +0 -108
- package/esm2022/lib/components/organisms/cards-carousel/types.mjs +0 -2
- package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +0 -537
- package/esm2022/lib/components/organisms/comment-section/types.mjs +0 -2
- package/esm2022/lib/components/organisms/company-footer/company-footer.component.mjs +0 -76
- package/esm2022/lib/components/organisms/company-footer/types.mjs +0 -2
- package/esm2022/lib/components/organisms/cookie-banner/cookie-banner.component.mjs +0 -199
- package/esm2022/lib/components/organisms/cookie-banner/types.mjs +0 -2
- package/esm2022/lib/components/organisms/data-table/data-table.component.mjs +0 -1081
- package/esm2022/lib/components/organisms/data-table/types.mjs +0 -13
- package/esm2022/lib/components/organisms/docs-sidebar/docs-sidebar.component.mjs +0 -290
- package/esm2022/lib/components/organisms/docs-sidebar/types.mjs +0 -2
- package/esm2022/lib/components/organisms/docs-toc/docs-toc.component.mjs +0 -307
- package/esm2022/lib/components/organisms/docs-toc/types.mjs +0 -2
- package/esm2022/lib/components/organisms/faq/faq.component.mjs +0 -176
- package/esm2022/lib/components/organisms/faq/types.mjs +0 -9
- package/esm2022/lib/components/organisms/footer/footer.component.mjs +0 -73
- package/esm2022/lib/components/organisms/footer/types.mjs +0 -2
- package/esm2022/lib/components/organisms/form/factory.mjs +0 -29
- package/esm2022/lib/components/organisms/form/form-footer/form-footer.component.mjs +0 -83
- package/esm2022/lib/components/organisms/form/form.component.mjs +0 -510
- package/esm2022/lib/components/organisms/fun-header/fun-header.component.mjs +0 -225
- package/esm2022/lib/components/organisms/fun-header/types.mjs +0 -2
- package/esm2022/lib/components/organisms/header/header.component.mjs +0 -51
- package/esm2022/lib/components/organisms/header/types.mjs +0 -2
- package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +0 -620
- package/esm2022/lib/components/organisms/infinite-list/types.mjs +0 -15
- package/esm2022/lib/components/organisms/item-list/item-list.component.mjs +0 -418
- package/esm2022/lib/components/organisms/item-list/types.mjs +0 -2
- package/esm2022/lib/components/organisms/login/login.component.mjs +0 -735
- package/esm2022/lib/components/organisms/login/types.mjs +0 -11
- package/esm2022/lib/components/organisms/menu/menu.component.mjs +0 -206
- package/esm2022/lib/components/organisms/menu/types.mjs +0 -2
- package/esm2022/lib/components/organisms/no-content/no-content.component.mjs +0 -66
- package/esm2022/lib/components/organisms/no-content/types.mjs +0 -2
- package/esm2022/lib/components/organisms/rotating-text/rotating-text.component.mjs +0 -180
- package/esm2022/lib/components/organisms/rotating-text/types.mjs +0 -2
- package/esm2022/lib/components/organisms/skeleton-layout/skeleton-layout.component.mjs +0 -423
- package/esm2022/lib/components/organisms/skeleton-layout/types.mjs +0 -10
- package/esm2022/lib/components/organisms/tabbed-content/tabbed-content.component.mjs +0 -170
- package/esm2022/lib/components/organisms/tabbed-content/types.mjs +0 -2
- package/esm2022/lib/components/organisms/terminal-404/terminal-404.component.mjs +0 -214
- package/esm2022/lib/components/organisms/terminal-404/types.mjs +0 -2
- package/esm2022/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.mjs +0 -72
- package/esm2022/lib/components/organisms/testimonial-carousel/types.mjs +0 -2
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +0 -255
- package/esm2022/lib/components/organisms/toolbar/types.mjs +0 -2
- package/esm2022/lib/components/organisms/wizard/types.mjs +0 -10
- package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +0 -111
- package/esm2022/lib/components/organisms/wizard/wizard.component.mjs +0 -161
- package/esm2022/lib/components/templates/auth-background/auth-background.component.mjs +0 -164
- package/esm2022/lib/components/templates/auth-background/types.mjs +0 -2
- package/esm2022/lib/components/templates/docs-layout/docs-layout.component.mjs +0 -221
- package/esm2022/lib/components/templates/docs-layout/types.mjs +0 -2
- package/esm2022/lib/components/templates/docs-page/docs-page.component.mjs +0 -251
- package/esm2022/lib/components/templates/docs-page/types.mjs +0 -2
- package/esm2022/lib/components/templates/docs-shell/docs-shell.component.mjs +0 -376
- package/esm2022/lib/components/templates/docs-shell/types.mjs +0 -2
- package/esm2022/lib/components/templates/maintenance-page/maintenance-page.component.mjs +0 -153
- package/esm2022/lib/components/templates/maintenance-page/types.mjs +0 -2
- package/esm2022/lib/components/templates/page-content/page-content.component.mjs +0 -193
- package/esm2022/lib/components/templates/page-content/types.mjs +0 -2
- package/esm2022/lib/components/templates/page-template/page-template.component.mjs +0 -188
- package/esm2022/lib/components/templates/page-template/types.mjs +0 -2
- package/esm2022/lib/components/templates/page-wrapper/page-wrapper.component.mjs +0 -238
- package/esm2022/lib/components/templates/page-wrapper/types.mjs +0 -2
- package/esm2022/lib/components/templates/simple/simple.component.mjs +0 -123
- package/esm2022/lib/components/templates/simple/types.mjs +0 -2
- package/esm2022/lib/components/types.mjs +0 -60
- package/esm2022/lib/config/company-footer.config.mjs +0 -125
- package/esm2022/lib/config/index.mjs +0 -5
- package/esm2022/lib/services/ads/ads-loader.service.mjs +0 -120
- package/esm2022/lib/services/ads/ads.service.mjs +0 -236
- package/esm2022/lib/services/ads/config.mjs +0 -81
- package/esm2022/lib/services/ads/index.mjs +0 -13
- package/esm2022/lib/services/ads/types.mjs +0 -23
- package/esm2022/lib/services/app-config/app-config.service.mjs +0 -209
- package/esm2022/lib/services/app-config/config.mjs +0 -47
- package/esm2022/lib/services/app-config/index.mjs +0 -48
- package/esm2022/lib/services/app-config/types.mjs +0 -13
- package/esm2022/lib/services/app-config/version.mjs +0 -85
- package/esm2022/lib/services/app-version/app-version.service.mjs +0 -187
- package/esm2022/lib/services/app-version/config.mjs +0 -42
- package/esm2022/lib/services/app-version/index.mjs +0 -24
- package/esm2022/lib/services/app-version/types.mjs +0 -17
- package/esm2022/lib/services/auth/auth-state.service.mjs +0 -207
- package/esm2022/lib/services/auth/auth.service.mjs +0 -1142
- package/esm2022/lib/services/auth/config.mjs +0 -75
- package/esm2022/lib/services/auth/device.service.mjs +0 -135
- package/esm2022/lib/services/auth/guards.mjs +0 -199
- package/esm2022/lib/services/auth/handoff.service.mjs +0 -152
- package/esm2022/lib/services/auth/index.mjs +0 -98
- package/esm2022/lib/services/auth/interceptor.mjs +0 -122
- package/esm2022/lib/services/auth/notification-action.service.mjs +0 -117
- package/esm2022/lib/services/auth/oauth-callback.component.mjs +0 -169
- package/esm2022/lib/services/auth/oauth.service.mjs +0 -322
- package/esm2022/lib/services/auth/org-switch.service.mjs +0 -137
- package/esm2022/lib/services/auth/session.service.mjs +0 -78
- package/esm2022/lib/services/auth/storage.service.mjs +0 -152
- package/esm2022/lib/services/auth/sync.service.mjs +0 -149
- package/esm2022/lib/services/auth/token.service.mjs +0 -122
- package/esm2022/lib/services/auth/types.mjs +0 -30
- package/esm2022/lib/services/confirmation-dialog/confirmation-dialog.service.mjs +0 -189
- package/esm2022/lib/services/confirmation-dialog/types.mjs +0 -14
- package/esm2022/lib/services/content/content-types/blog.mjs +0 -275
- package/esm2022/lib/services/content/content-types/documentation.mjs +0 -303
- package/esm2022/lib/services/content/content-types/news.mjs +0 -277
- package/esm2022/lib/services/content/index.mjs +0 -51
- package/esm2022/lib/services/content/transformer.mjs +0 -265
- package/esm2022/lib/services/content/types.mjs +0 -41
- package/esm2022/lib/services/docs/docs-navigation.service.mjs +0 -91
- package/esm2022/lib/services/donation/config.mjs +0 -41
- package/esm2022/lib/services/donation/donation.service.mjs +0 -92
- package/esm2022/lib/services/donation/index.mjs +0 -25
- package/esm2022/lib/services/donation/types.mjs +0 -10
- package/esm2022/lib/services/download.service.mjs +0 -80
- package/esm2022/lib/services/feedback/config.mjs +0 -49
- package/esm2022/lib/services/feedback/feedback.service.mjs +0 -296
- package/esm2022/lib/services/feedback/index.mjs +0 -44
- package/esm2022/lib/services/feedback/types.mjs +0 -30
- package/esm2022/lib/services/firebase/analytics-error-handler.mjs +0 -141
- package/esm2022/lib/services/firebase/analytics-router-tracker.mjs +0 -99
- package/esm2022/lib/services/firebase/analytics-types.mjs +0 -7
- package/esm2022/lib/services/firebase/analytics.service.mjs +0 -620
- package/esm2022/lib/services/firebase/config.mjs +0 -131
- package/esm2022/lib/services/firebase/firebase.service.mjs +0 -506
- package/esm2022/lib/services/firebase/firestore-collection.mjs +0 -301
- package/esm2022/lib/services/firebase/firestore.service.mjs +0 -571
- package/esm2022/lib/services/firebase/index.mjs +0 -56
- package/esm2022/lib/services/firebase/messaging.service.mjs +0 -721
- package/esm2022/lib/services/firebase/notifications.service.mjs +0 -274
- package/esm2022/lib/services/firebase/shared-config.mjs +0 -147
- package/esm2022/lib/services/firebase/storage.service.mjs +0 -484
- package/esm2022/lib/services/firebase/types.mjs +0 -18
- package/esm2022/lib/services/firebase/utils/path-builder.mjs +0 -195
- package/esm2022/lib/services/firebase/utils/query-builder.mjs +0 -302
- package/esm2022/lib/services/i18n/config.mjs +0 -128
- package/esm2022/lib/services/i18n/default-content.mjs +0 -577
- package/esm2022/lib/services/i18n/i18n.service.mjs +0 -217
- package/esm2022/lib/services/i18n/index.mjs +0 -13
- package/esm2022/lib/services/i18n/input-i18n.helper.mjs +0 -97
- package/esm2022/lib/services/i18n/translate.pipe.mjs +0 -50
- package/esm2022/lib/services/i18n/types.mjs +0 -15
- package/esm2022/lib/services/icons.service.mjs +0 -83
- package/esm2022/lib/services/image/image.service.mjs +0 -244
- package/esm2022/lib/services/image/index.mjs +0 -3
- package/esm2022/lib/services/image/types.mjs +0 -13
- package/esm2022/lib/services/in-app-browser.service.mjs +0 -35
- package/esm2022/lib/services/legal-link/legal-link.service.mjs +0 -85
- package/esm2022/lib/services/link-processor.service.mjs +0 -259
- package/esm2022/lib/services/local-storage.service.mjs +0 -37
- package/esm2022/lib/services/locale.service.mjs +0 -75
- package/esm2022/lib/services/markdown-article/legal-content.service.mjs +0 -107
- package/esm2022/lib/services/markdown-article/markdown-article-parser.mjs +0 -302
- package/esm2022/lib/services/markdown-article/markdown-article-parser.service.mjs +0 -20
- package/esm2022/lib/services/meta/index.mjs +0 -3
- package/esm2022/lib/services/meta/meta.service.mjs +0 -63
- package/esm2022/lib/services/meta/types.mjs +0 -2
- package/esm2022/lib/services/modal/modal.service.mjs +0 -220
- package/esm2022/lib/services/modal/simple-modal-content.component.mjs +0 -133
- package/esm2022/lib/services/modal/types.mjs +0 -26
- package/esm2022/lib/services/navigation/index.mjs +0 -3
- package/esm2022/lib/services/navigation/navigation.service.mjs +0 -216
- package/esm2022/lib/services/navigation/types.mjs +0 -16
- package/esm2022/lib/services/page-refresh/page-refresh.service.mjs +0 -104
- package/esm2022/lib/services/pagination/index.mjs +0 -5
- package/esm2022/lib/services/pagination/pagination.service.mjs +0 -218
- package/esm2022/lib/services/pagination/types.mjs +0 -14
- package/esm2022/lib/services/preferences/index.mjs +0 -3
- package/esm2022/lib/services/preferences/preferences.service.mjs +0 -198
- package/esm2022/lib/services/preferences/preferences.types.mjs +0 -7
- package/esm2022/lib/services/presets/config.mjs +0 -46
- package/esm2022/lib/services/presets/index.mjs +0 -5
- package/esm2022/lib/services/presets/preset.service.mjs +0 -104
- package/esm2022/lib/services/presets/types.mjs +0 -2
- package/esm2022/lib/services/qr-generator/qr-generator.service.mjs +0 -341
- package/esm2022/lib/services/qr-generator/types.mjs +0 -46
- package/esm2022/lib/services/refreshable-stream/index.mjs +0 -8
- package/esm2022/lib/services/refreshable-stream/refreshable-stream.mjs +0 -112
- package/esm2022/lib/services/skeleton/config.mjs +0 -79
- package/esm2022/lib/services/skeleton/directives/loading.directive.mjs +0 -215
- package/esm2022/lib/services/skeleton/index.mjs +0 -16
- package/esm2022/lib/services/skeleton/skeleton.service.mjs +0 -198
- package/esm2022/lib/services/skeleton/templates/detail-skeleton.component.mjs +0 -223
- package/esm2022/lib/services/skeleton/templates/form-skeleton.component.mjs +0 -127
- package/esm2022/lib/services/skeleton/templates/grid-skeleton.component.mjs +0 -154
- package/esm2022/lib/services/skeleton/templates/list-skeleton.component.mjs +0 -110
- package/esm2022/lib/services/skeleton/templates/profile-skeleton.component.mjs +0 -207
- package/esm2022/lib/services/skeleton/templates/table-skeleton.component.mjs +0 -116
- package/esm2022/lib/services/skeleton/types.mjs +0 -11
- package/esm2022/lib/services/theme.service.mjs +0 -153
- package/esm2022/lib/services/toast.service.mjs +0 -53
- package/esm2022/lib/services/types.mjs +0 -5
- package/esm2022/lib/shared/constants/storage.mjs +0 -3
- package/esm2022/lib/shared/pipes/process-links.pipe.mjs +0 -69
- package/esm2022/lib/shared/utils/datetime.mjs +0 -24
- package/esm2022/lib/shared/utils/dom.mjs +0 -27
- package/esm2022/lib/shared/utils/form-defaults.mjs +0 -112
- package/esm2022/lib/shared/utils/styles.mjs +0 -37
- package/esm2022/lib/shared/utils/text.mjs +0 -12
- package/esm2022/lib/version.mjs +0 -6
- package/esm2022/public-api.mjs +0 -367
- package/esm2022/valtech-components.mjs +0 -5
- package/index.d.ts +0 -5
- package/lib/components/atoms/avatar/avatar.component.d.ts +0 -36
- package/lib/components/atoms/avatar/types.d.ts +0 -15
- package/lib/components/atoms/box/box.component.d.ts +0 -26
- package/lib/components/atoms/box/types.d.ts +0 -19
- package/lib/components/atoms/button/button.component.d.ts +0 -63
- package/lib/components/atoms/button/factory.d.ts +0 -71
- package/lib/components/atoms/container/container.component.d.ts +0 -30
- package/lib/components/atoms/container/types.d.ts +0 -11
- package/lib/components/atoms/countdown/countdown.component.d.ts +0 -38
- package/lib/components/atoms/countdown/types.d.ts +0 -108
- package/lib/components/atoms/display/display.component.d.ts +0 -19
- package/lib/components/atoms/display/types.d.ts +0 -33
- package/lib/components/atoms/divider/divider.component.d.ts +0 -27
- package/lib/components/atoms/divider/types.d.ts +0 -12
- package/lib/components/atoms/fab/fab.component.d.ts +0 -36
- package/lib/components/atoms/fab/types.d.ts +0 -45
- package/lib/components/atoms/glass/glass.component.d.ts +0 -43
- package/lib/components/atoms/glass/types.d.ts +0 -70
- package/lib/components/atoms/glow/glow.component.d.ts +0 -42
- package/lib/components/atoms/glow/types.d.ts +0 -40
- package/lib/components/atoms/horizontal-scroll/horizontal-scroll.component.d.ts +0 -41
- package/lib/components/atoms/horizontal-scroll/types.d.ts +0 -13
- package/lib/components/atoms/href/href.component.d.ts +0 -25
- package/lib/components/atoms/href/types.d.ts +0 -19
- package/lib/components/atoms/icon/icon.component.d.ts +0 -18
- package/lib/components/atoms/icon/types.d.ts +0 -13
- package/lib/components/atoms/image/image.component.d.ts +0 -41
- package/lib/components/atoms/image/types.d.ts +0 -37
- package/lib/components/atoms/pattern/motifs.d.ts +0 -60
- package/lib/components/atoms/pattern/pattern.component.d.ts +0 -68
- package/lib/components/atoms/pattern/types.d.ts +0 -61
- package/lib/components/atoms/price-tag/price-tag.component.d.ts +0 -15
- package/lib/components/atoms/price-tag/types.d.ts +0 -59
- package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +0 -35
- package/lib/components/atoms/progress-bar/types.d.ts +0 -19
- package/lib/components/atoms/progress-ring/progress-ring.component.d.ts +0 -20
- package/lib/components/atoms/progress-ring/types.d.ts +0 -24
- package/lib/components/atoms/qr-code/qr-code.component.d.ts +0 -33
- package/lib/components/atoms/qr-code/types.d.ts +0 -124
- package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +0 -53
- package/lib/components/atoms/rights-footer/types.d.ts +0 -21
- package/lib/components/atoms/skeleton/skeleton.component.d.ts +0 -12
- package/lib/components/atoms/skeleton/types.d.ts +0 -29
- package/lib/components/atoms/text/text.component.d.ts +0 -33
- package/lib/components/atoms/text/types.d.ts +0 -42
- package/lib/components/atoms/title/title.component.d.ts +0 -21
- package/lib/components/atoms/title/types.d.ts +0 -36
- package/lib/components/atoms/user-avatar/types.d.ts +0 -74
- package/lib/components/atoms/user-avatar/user-avatar.component.d.ts +0 -55
- package/lib/components/molecules/accordion/accordion.component.d.ts +0 -18
- package/lib/components/molecules/accordion/types.d.ts +0 -47
- package/lib/components/molecules/action-card/action-card.component.d.ts +0 -90
- package/lib/components/molecules/action-card/types.d.ts +0 -83
- package/lib/components/molecules/action-header/action-header.component.d.ts +0 -27
- package/lib/components/molecules/action-header/types.d.ts +0 -27
- package/lib/components/molecules/ad-slot/ad-slot.component.d.ts +0 -69
- package/lib/components/molecules/alert-box/alert-box.component.d.ts +0 -39
- package/lib/components/molecules/alert-box/types.d.ts +0 -37
- package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +0 -22
- package/lib/components/molecules/breadcrumb/types.d.ts +0 -45
- package/lib/components/molecules/button-group/button-group.component.d.ts +0 -23
- package/lib/components/molecules/button-group/types.d.ts +0 -13
- package/lib/components/molecules/card/card.component.d.ts +0 -49
- package/lib/components/molecules/card/types.d.ts +0 -32
- package/lib/components/molecules/check-input/check-input.component.d.ts +0 -36
- package/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.d.ts +0 -17
- package/lib/components/molecules/chip-group/chip-group.component.d.ts +0 -22
- package/lib/components/molecules/chip-group/types.d.ts +0 -65
- package/lib/components/molecules/code-display/code-display.component.d.ts +0 -24
- package/lib/components/molecules/code-display/types.d.ts +0 -10
- package/lib/components/molecules/command-display/command-display.component.d.ts +0 -11
- package/lib/components/molecules/command-display/types.d.ts +0 -3
- package/lib/components/molecules/comment/comment.component.d.ts +0 -42
- package/lib/components/molecules/comment/types.d.ts +0 -171
- package/lib/components/molecules/comment-input/comment-input.component.d.ts +0 -16
- package/lib/components/molecules/comment-input/types.d.ts +0 -59
- package/lib/components/molecules/content-loader/content-loader.component.d.ts +0 -18
- package/lib/components/molecules/content-loader/types.d.ts +0 -15
- package/lib/components/molecules/content-reaction/content-reaction.component.d.ts +0 -58
- package/lib/components/molecules/content-reaction/types.d.ts +0 -77
- package/lib/components/molecules/currency-input/currency-input.component.d.ts +0 -40
- package/lib/components/molecules/currency-input/types.d.ts +0 -96
- package/lib/components/molecules/date-input/date-input.component.d.ts +0 -40
- package/lib/components/molecules/date-input/types.d.ts +0 -74
- package/lib/components/molecules/date-range-input/date-range-input.component.d.ts +0 -50
- package/lib/components/molecules/date-range-input/types.d.ts +0 -109
- package/lib/components/molecules/docs-api-table/docs-api-table.component.d.ts +0 -41
- package/lib/components/molecules/docs-api-table/types.d.ts +0 -62
- package/lib/components/molecules/docs-breadcrumb/docs-breadcrumb.component.d.ts +0 -31
- package/lib/components/molecules/docs-breadcrumb/types.d.ts +0 -20
- package/lib/components/molecules/docs-callout/docs-callout.component.d.ts +0 -17
- package/lib/components/molecules/docs-code-example/docs-code-example.component.d.ts +0 -45
- package/lib/components/molecules/docs-code-example/types.d.ts +0 -63
- package/lib/components/molecules/docs-nav-links/docs-nav-links.component.d.ts +0 -30
- package/lib/components/molecules/docs-nav-links/types.d.ts +0 -31
- package/lib/components/molecules/docs-search/docs-search.component.d.ts +0 -47
- package/lib/components/molecules/docs-search/types.d.ts +0 -27
- package/lib/components/molecules/docs-section/docs-section.component.d.ts +0 -29
- package/lib/components/molecules/docs-section/types.d.ts +0 -27
- package/lib/components/molecules/email-input/email-input.component.d.ts +0 -34
- package/lib/components/molecules/expandable-text/expandable-text.component.d.ts +0 -23
- package/lib/components/molecules/expandable-text/types.d.ts +0 -14
- package/lib/components/molecules/features-list/features-list.component.d.ts +0 -66
- package/lib/components/molecules/features-list/types.d.ts +0 -36
- package/lib/components/molecules/feedback-form/feedback-form.component.d.ts +0 -58
- package/lib/components/molecules/feedback-form/types.d.ts +0 -54
- package/lib/components/molecules/file-input/file-input.component.d.ts +0 -25
- package/lib/components/molecules/file-input/types.d.ts +0 -72
- package/lib/components/molecules/footer-links/footer-links.component.d.ts +0 -47
- package/lib/components/molecules/footer-links/types.d.ts +0 -50
- package/lib/components/molecules/glow-card/glow-card.component.d.ts +0 -60
- package/lib/components/molecules/glow-card/types.d.ts +0 -94
- package/lib/components/molecules/hint/hint.component.d.ts +0 -19
- package/lib/components/molecules/hour-input/hour-input.component.d.ts +0 -15
- package/lib/components/molecules/image-crop/image-crop.component.d.ts +0 -59
- package/lib/components/molecules/image-crop/index.d.ts +0 -1
- package/lib/components/molecules/info/info.component.d.ts +0 -9
- package/lib/components/molecules/info/types.d.ts +0 -10
- package/lib/components/molecules/language-selector/language-selector.component.d.ts +0 -40
- package/lib/components/molecules/language-selector/types.d.ts +0 -82
- package/lib/components/molecules/layered-card/layered-card.component.d.ts +0 -10
- package/lib/components/molecules/layered-card/types.d.ts +0 -15
- package/lib/components/molecules/link/link.component.d.ts +0 -24
- package/lib/components/molecules/link/types.d.ts +0 -19
- package/lib/components/molecules/linked-providers/linked-providers.component.d.ts +0 -30
- package/lib/components/molecules/linked-providers/types.d.ts +0 -38
- package/lib/components/molecules/links-accordion/links-accordion.component.d.ts +0 -61
- package/lib/components/molecules/links-accordion/types.d.ts +0 -39
- package/lib/components/molecules/links-cake/links-cake.component.d.ts +0 -17
- package/lib/components/molecules/links-cake/types.d.ts +0 -13
- package/lib/components/molecules/multi-select-search/multi-select-search.component.d.ts +0 -76
- package/lib/components/molecules/notes-box/notes-box.component.d.ts +0 -33
- package/lib/components/molecules/notes-box/types.d.ts +0 -35
- package/lib/components/molecules/number-from-to/number-from-to.component.d.ts +0 -27
- package/lib/components/molecules/number-from-to/types.d.ts +0 -76
- package/lib/components/molecules/number-input/number-input.component.d.ts +0 -16
- package/lib/components/molecules/number-stepper/number-stepper.component.d.ts +0 -38
- package/lib/components/molecules/number-stepper/types.d.ts +0 -88
- package/lib/components/molecules/page-links/page-links.component.d.ts +0 -29
- package/lib/components/molecules/page-links/types.d.ts +0 -38
- package/lib/components/molecules/pagination/pagination.component.d.ts +0 -15
- package/lib/components/molecules/pagination/types.d.ts +0 -41
- package/lib/components/molecules/password-input/password-input.component.d.ts +0 -37
- package/lib/components/molecules/phone-input/phone-input.component.d.ts +0 -59
- package/lib/components/molecules/phone-input/types.d.ts +0 -98
- package/lib/components/molecules/pill/pill.component.d.ts +0 -44
- package/lib/components/molecules/pill/types.d.ts +0 -63
- package/lib/components/molecules/pin-input/pin-input.component.d.ts +0 -21
- package/lib/components/molecules/pin-input/types.d.ts +0 -69
- package/lib/components/molecules/plain-code-box/plain-code-box.component.d.ts +0 -22
- package/lib/components/molecules/plain-code-box/types.d.ts +0 -10
- package/lib/components/molecules/popover-selector/popover-selector.component.d.ts +0 -42
- package/lib/components/molecules/popover-selector/types.d.ts +0 -69
- package/lib/components/molecules/progress-status/progress-status.component.d.ts +0 -23
- package/lib/components/molecules/progress-status/types.d.ts +0 -20
- package/lib/components/molecules/prompter/prompter.component.d.ts +0 -10
- package/lib/components/molecules/prompter/types.d.ts +0 -25
- package/lib/components/molecules/quote-box/quote-box.component.d.ts +0 -26
- package/lib/components/molecules/radio-input/radio-input.component.d.ts +0 -15
- package/lib/components/molecules/range-input/range-input.component.d.ts +0 -25
- package/lib/components/molecules/range-input/types.d.ts +0 -59
- package/lib/components/molecules/rating/rating.component.d.ts +0 -23
- package/lib/components/molecules/rating/types.d.ts +0 -41
- package/lib/components/molecules/refresher/refresher.component.d.ts +0 -84
- package/lib/components/molecules/refresher/types.d.ts +0 -86
- package/lib/components/molecules/searchbar/searchbar.component.d.ts +0 -43
- package/lib/components/molecules/searchbar/types.d.ts +0 -33
- package/lib/components/molecules/segment-control/segment-control.component.d.ts +0 -35
- package/lib/components/molecules/segment-control/types.d.ts +0 -46
- package/lib/components/molecules/select-input/select-input.component.d.ts +0 -57
- package/lib/components/molecules/select-search/select-search.component.d.ts +0 -78
- package/lib/components/molecules/share-buttons/share-buttons.component.d.ts +0 -22
- package/lib/components/molecules/share-buttons/types.d.ts +0 -108
- package/lib/components/molecules/stats-card/stats-card.component.d.ts +0 -20
- package/lib/components/molecules/stats-card/types.d.ts +0 -60
- package/lib/components/molecules/stepper/stepper.component.d.ts +0 -31
- package/lib/components/molecules/stepper/types.d.ts +0 -66
- package/lib/components/molecules/swipe-carousel/swipe-carousel.component.d.ts +0 -66
- package/lib/components/molecules/swipe-carousel/types.d.ts +0 -35
- package/lib/components/molecules/tabs/tabs.component.d.ts +0 -34
- package/lib/components/molecules/tabs/types.d.ts +0 -45
- package/lib/components/molecules/testimonial-card/testimonial-card.component.d.ts +0 -41
- package/lib/components/molecules/testimonial-card/types.d.ts +0 -25
- package/lib/components/molecules/text-input/text-input.component.d.ts +0 -42
- package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +0 -46
- package/lib/components/molecules/textarea-input/types.d.ts +0 -74
- package/lib/components/molecules/timeline/timeline.component.d.ts +0 -14
- package/lib/components/molecules/timeline/types.d.ts +0 -39
- package/lib/components/molecules/title-block/title-block.component.d.ts +0 -12
- package/lib/components/molecules/title-block/types.d.ts +0 -15
- package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +0 -39
- package/lib/components/molecules/toggle-input/types.d.ts +0 -30
- package/lib/components/molecules/update-banner/types.d.ts +0 -41
- package/lib/components/molecules/update-banner/update-banner.component.d.ts +0 -48
- package/lib/components/molecules/username-input/types.d.ts +0 -36
- package/lib/components/molecules/username-input/username-input.component.d.ts +0 -58
- package/lib/components/organisms/article/article.component.d.ts +0 -108
- package/lib/components/organisms/article/types.d.ts +0 -367
- package/lib/components/organisms/avatar-upload/avatar-upload.component.d.ts +0 -84
- package/lib/components/organisms/avatar-upload/types.d.ts +0 -62
- package/lib/components/organisms/banner/banner.component.d.ts +0 -16
- package/lib/components/organisms/banner/types.d.ts +0 -29
- package/lib/components/organisms/bottom-nav/bottom-nav.component.d.ts +0 -91
- package/lib/components/organisms/bottom-nav/types.d.ts +0 -120
- package/lib/components/organisms/cards-carousel/cards-carousel.component.d.ts +0 -36
- package/lib/components/organisms/cards-carousel/types.d.ts +0 -40
- package/lib/components/organisms/comment-section/comment-section.component.d.ts +0 -50
- package/lib/components/organisms/comment-section/types.d.ts +0 -144
- package/lib/components/organisms/company-footer/company-footer.component.d.ts +0 -37
- package/lib/components/organisms/company-footer/types.d.ts +0 -15
- package/lib/components/organisms/cookie-banner/cookie-banner.component.d.ts +0 -36
- package/lib/components/organisms/cookie-banner/types.d.ts +0 -62
- package/lib/components/organisms/data-table/data-table.component.d.ts +0 -63
- package/lib/components/organisms/data-table/types.d.ts +0 -219
- package/lib/components/organisms/docs-sidebar/docs-sidebar.component.d.ts +0 -51
- package/lib/components/organisms/docs-sidebar/types.d.ts +0 -93
- package/lib/components/organisms/docs-toc/docs-toc.component.d.ts +0 -62
- package/lib/components/organisms/docs-toc/types.d.ts +0 -62
- package/lib/components/organisms/faq/faq.component.d.ts +0 -46
- package/lib/components/organisms/faq/types.d.ts +0 -53
- package/lib/components/organisms/footer/footer.component.d.ts +0 -36
- package/lib/components/organisms/footer/types.d.ts +0 -16
- package/lib/components/organisms/form/factory.d.ts +0 -17
- package/lib/components/organisms/form/form-footer/form-footer.component.d.ts +0 -17
- package/lib/components/organisms/form/form.component.d.ts +0 -72
- package/lib/components/organisms/fun-header/fun-header.component.d.ts +0 -72
- package/lib/components/organisms/fun-header/types.d.ts +0 -28
- package/lib/components/organisms/header/header.component.d.ts +0 -22
- package/lib/components/organisms/header/types.d.ts +0 -16
- package/lib/components/organisms/infinite-list/infinite-list.component.d.ts +0 -113
- package/lib/components/organisms/infinite-list/types.d.ts +0 -197
- package/lib/components/organisms/item-list/item-list.component.d.ts +0 -43
- package/lib/components/organisms/item-list/types.d.ts +0 -126
- package/lib/components/organisms/login/login.component.d.ts +0 -79
- package/lib/components/organisms/login/types.d.ts +0 -70
- package/lib/components/organisms/menu/menu.component.d.ts +0 -44
- package/lib/components/organisms/menu/types.d.ts +0 -23
- package/lib/components/organisms/no-content/no-content.component.d.ts +0 -14
- package/lib/components/organisms/no-content/types.d.ts +0 -17
- package/lib/components/organisms/rotating-text/rotating-text.component.d.ts +0 -47
- package/lib/components/organisms/rotating-text/types.d.ts +0 -28
- package/lib/components/organisms/skeleton-layout/skeleton-layout.component.d.ts +0 -37
- package/lib/components/organisms/skeleton-layout/types.d.ts +0 -50
- package/lib/components/organisms/tabbed-content/tabbed-content.component.d.ts +0 -65
- package/lib/components/organisms/tabbed-content/types.d.ts +0 -53
- package/lib/components/organisms/terminal-404/terminal-404.component.d.ts +0 -42
- package/lib/components/organisms/terminal-404/types.d.ts +0 -22
- package/lib/components/organisms/testimonial-carousel/testimonial-carousel.component.d.ts +0 -33
- package/lib/components/organisms/testimonial-carousel/types.d.ts +0 -8
- package/lib/components/organisms/toolbar/toolbar.component.d.ts +0 -85
- package/lib/components/organisms/toolbar/types.d.ts +0 -31
- package/lib/components/organisms/wizard/types.d.ts +0 -42
- package/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.d.ts +0 -23
- package/lib/components/organisms/wizard/wizard.component.d.ts +0 -27
- package/lib/components/templates/auth-background/auth-background.component.d.ts +0 -62
- package/lib/components/templates/auth-background/types.d.ts +0 -30
- package/lib/components/templates/docs-layout/docs-layout.component.d.ts +0 -42
- package/lib/components/templates/docs-layout/types.d.ts +0 -39
- package/lib/components/templates/docs-page/docs-page.component.d.ts +0 -61
- package/lib/components/templates/docs-page/types.d.ts +0 -121
- package/lib/components/templates/docs-shell/docs-shell.component.d.ts +0 -33
- package/lib/components/templates/docs-shell/types.d.ts +0 -152
- package/lib/components/templates/maintenance-page/maintenance-page.component.d.ts +0 -57
- package/lib/components/templates/maintenance-page/types.d.ts +0 -12
- package/lib/components/templates/page-content/page-content.component.d.ts +0 -107
- package/lib/components/templates/page-content/types.d.ts +0 -27
- package/lib/components/templates/page-template/page-template.component.d.ts +0 -54
- package/lib/components/templates/page-template/types.d.ts +0 -17
- package/lib/components/templates/page-wrapper/page-wrapper.component.d.ts +0 -99
- package/lib/components/templates/page-wrapper/types.d.ts +0 -26
- package/lib/components/templates/simple/simple.component.d.ts +0 -14
- package/lib/components/templates/simple/types.d.ts +0 -10
- package/lib/components/types.d.ts +0 -304
- package/lib/config/company-footer.config.d.ts +0 -118
- package/lib/config/index.d.ts +0 -4
- package/lib/services/ads/ads-loader.service.d.ts +0 -41
- package/lib/services/ads/ads.service.d.ts +0 -99
- package/lib/services/ads/config.d.ts +0 -53
- package/lib/services/ads/index.d.ts +0 -9
- package/lib/services/ads/types.d.ts +0 -106
- package/lib/services/app-config/app-config.service.d.ts +0 -115
- package/lib/services/app-config/config.d.ts +0 -31
- package/lib/services/app-config/index.d.ts +0 -47
- package/lib/services/app-config/types.d.ts +0 -54
- package/lib/services/app-config/version.d.ts +0 -64
- package/lib/services/app-version/app-version.service.d.ts +0 -64
- package/lib/services/app-version/config.d.ts +0 -35
- package/lib/services/app-version/index.d.ts +0 -23
- package/lib/services/app-version/types.d.ts +0 -35
- package/lib/services/auth/auth-state.service.d.ts +0 -106
- package/lib/services/auth/auth.service.d.ts +0 -429
- package/lib/services/auth/config.d.ts +0 -38
- package/lib/services/auth/device.service.d.ts +0 -101
- package/lib/services/auth/guards.d.ts +0 -126
- package/lib/services/auth/handoff.service.d.ts +0 -159
- package/lib/services/auth/index.d.ts +0 -89
- package/lib/services/auth/interceptor.d.ts +0 -22
- package/lib/services/auth/notification-action.service.d.ts +0 -34
- package/lib/services/auth/oauth-callback.component.d.ts +0 -34
- package/lib/services/auth/oauth.service.d.ts +0 -99
- package/lib/services/auth/org-switch.service.d.ts +0 -127
- package/lib/services/auth/session.service.d.ts +0 -60
- package/lib/services/auth/storage.service.d.ts +0 -52
- package/lib/services/auth/sync.service.d.ts +0 -49
- package/lib/services/auth/token.service.d.ts +0 -57
- package/lib/services/auth/types.d.ts +0 -862
- package/lib/services/confirmation-dialog/confirmation-dialog.service.d.ts +0 -71
- package/lib/services/confirmation-dialog/types.d.ts +0 -61
- package/lib/services/content/content-types/blog.d.ts +0 -148
- package/lib/services/content/content-types/documentation.d.ts +0 -183
- package/lib/services/content/content-types/news.d.ts +0 -162
- package/lib/services/content/index.d.ts +0 -49
- package/lib/services/content/transformer.d.ts +0 -96
- package/lib/services/content/types.d.ts +0 -220
- package/lib/services/docs/docs-navigation.service.d.ts +0 -51
- package/lib/services/donation/config.d.ts +0 -33
- package/lib/services/donation/donation.service.d.ts +0 -54
- package/lib/services/donation/index.d.ts +0 -25
- package/lib/services/donation/types.d.ts +0 -85
- package/lib/services/download.service.d.ts +0 -21
- package/lib/services/feedback/config.d.ts +0 -35
- package/lib/services/feedback/feedback.service.d.ts +0 -134
- package/lib/services/feedback/index.d.ts +0 -40
- package/lib/services/feedback/types.d.ts +0 -173
- package/lib/services/firebase/analytics-error-handler.d.ts +0 -54
- package/lib/services/firebase/analytics-router-tracker.d.ts +0 -51
- package/lib/services/firebase/analytics-types.d.ts +0 -221
- package/lib/services/firebase/analytics.service.d.ts +0 -256
- package/lib/services/firebase/config.d.ts +0 -49
- package/lib/services/firebase/firebase.service.d.ts +0 -303
- package/lib/services/firebase/firestore-collection.d.ts +0 -199
- package/lib/services/firebase/firestore.service.d.ts +0 -335
- package/lib/services/firebase/index.d.ts +0 -44
- package/lib/services/firebase/messaging.service.d.ts +0 -341
- package/lib/services/firebase/notifications.service.d.ts +0 -158
- package/lib/services/firebase/shared-config.d.ts +0 -151
- package/lib/services/firebase/storage.service.d.ts +0 -238
- package/lib/services/firebase/types.d.ts +0 -374
- package/lib/services/firebase/utils/path-builder.d.ts +0 -132
- package/lib/services/firebase/utils/query-builder.d.ts +0 -210
- package/lib/services/i18n/config.d.ts +0 -29
- package/lib/services/i18n/default-content.d.ts +0 -30
- package/lib/services/i18n/i18n.service.d.ts +0 -128
- package/lib/services/i18n/index.d.ts +0 -6
- package/lib/services/i18n/input-i18n.helper.d.ts +0 -70
- package/lib/services/i18n/translate.pipe.d.ts +0 -36
- package/lib/services/i18n/types.d.ts +0 -93
- package/lib/services/icons.service.d.ts +0 -9
- package/lib/services/image/image.service.d.ts +0 -76
- package/lib/services/image/index.d.ts +0 -2
- package/lib/services/image/types.d.ts +0 -74
- package/lib/services/in-app-browser.service.d.ts +0 -16
- package/lib/services/legal-link/legal-link.service.d.ts +0 -73
- package/lib/services/link-processor.service.d.ts +0 -104
- package/lib/services/local-storage.service.d.ts +0 -27
- package/lib/services/locale.service.d.ts +0 -52
- package/lib/services/markdown-article/legal-content.service.d.ts +0 -73
- package/lib/services/markdown-article/markdown-article-parser.d.ts +0 -38
- package/lib/services/markdown-article/markdown-article-parser.service.d.ts +0 -12
- package/lib/services/meta/index.d.ts +0 -2
- package/lib/services/meta/meta.service.d.ts +0 -23
- package/lib/services/meta/types.d.ts +0 -12
- package/lib/services/modal/modal.service.d.ts +0 -100
- package/lib/services/modal/simple-modal-content.component.d.ts +0 -19
- package/lib/services/modal/types.d.ts +0 -155
- package/lib/services/navigation/index.d.ts +0 -2
- package/lib/services/navigation/navigation.service.d.ts +0 -134
- package/lib/services/navigation/types.d.ts +0 -67
- package/lib/services/page-refresh/page-refresh.service.d.ts +0 -86
- package/lib/services/pagination/index.d.ts +0 -2
- package/lib/services/pagination/pagination.service.d.ts +0 -43
- package/lib/services/pagination/types.d.ts +0 -113
- package/lib/services/preferences/index.d.ts +0 -2
- package/lib/services/preferences/preferences.service.d.ts +0 -61
- package/lib/services/preferences/preferences.types.d.ts +0 -35
- package/lib/services/presets/config.d.ts +0 -32
- package/lib/services/presets/index.d.ts +0 -3
- package/lib/services/presets/preset.service.d.ts +0 -69
- package/lib/services/presets/types.d.ts +0 -39
- package/lib/services/qr-generator/qr-generator.service.d.ts +0 -115
- package/lib/services/qr-generator/types.d.ts +0 -141
- package/lib/services/refreshable-stream/index.d.ts +0 -7
- package/lib/services/refreshable-stream/refreshable-stream.d.ts +0 -113
- package/lib/services/skeleton/config.d.ts +0 -30
- package/lib/services/skeleton/directives/loading.directive.d.ts +0 -71
- package/lib/services/skeleton/index.d.ts +0 -10
- package/lib/services/skeleton/skeleton.service.d.ts +0 -127
- package/lib/services/skeleton/templates/detail-skeleton.component.d.ts +0 -18
- package/lib/services/skeleton/templates/form-skeleton.component.d.ts +0 -22
- package/lib/services/skeleton/templates/grid-skeleton.component.d.ts +0 -18
- package/lib/services/skeleton/templates/list-skeleton.component.d.ts +0 -17
- package/lib/services/skeleton/templates/profile-skeleton.component.d.ts +0 -20
- package/lib/services/skeleton/templates/table-skeleton.component.d.ts +0 -17
- package/lib/services/skeleton/types.d.ts +0 -111
- package/lib/services/theme.service.d.ts +0 -76
- package/lib/services/toast.service.d.ts +0 -28
- package/lib/services/types.d.ts +0 -1
- package/lib/shared/constants/storage.d.ts +0 -2
- package/lib/shared/pipes/process-links.pipe.d.ts +0 -55
- package/lib/shared/utils/datetime.d.ts +0 -21
- package/lib/shared/utils/dom.d.ts +0 -13
- package/lib/shared/utils/form-defaults.d.ts +0 -30
- package/lib/shared/utils/styles.d.ts +0 -13
- package/lib/shared/utils/text.d.ts +0 -11
- package/lib/version.d.ts +0 -5
- package/public-api.d.ts +0 -316
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Valtech Auth Service
|
|
3
|
-
*
|
|
4
|
-
* Servicio de autenticación reutilizable para aplicaciones Angular.
|
|
5
|
-
* Proporciona autenticación con AuthV2, MFA, sincronización entre pestañas,
|
|
6
|
-
* refresh proactivo de tokens, y registro automático de dispositivos para
|
|
7
|
-
* push notifications.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```typescript
|
|
11
|
-
* // En main.ts
|
|
12
|
-
* import { bootstrapApplication } from '@angular/platform-browser';
|
|
13
|
-
* import { provideValtechAuth, provideValtechFirebase } from 'valtech-components';
|
|
14
|
-
* import { environment } from './environments/environment';
|
|
15
|
-
*
|
|
16
|
-
* bootstrapApplication(AppComponent, {
|
|
17
|
-
* providers: [
|
|
18
|
-
* provideValtechFirebase(environment.firebase),
|
|
19
|
-
* provideValtechAuth({
|
|
20
|
-
* apiUrl: environment.apiUrl,
|
|
21
|
-
* enableFirebaseIntegration: true,
|
|
22
|
-
* enableDeviceRegistration: true, // Auto-registra dispositivos para push
|
|
23
|
-
* }),
|
|
24
|
-
* ],
|
|
25
|
-
* });
|
|
26
|
-
*
|
|
27
|
-
* // En app.routes.ts
|
|
28
|
-
* import { authGuard, guestGuard, permissionGuard } from 'valtech-components';
|
|
29
|
-
*
|
|
30
|
-
* const routes: Routes = [
|
|
31
|
-
* { path: 'login', canActivate: [guestGuard], loadComponent: () => import('./login.page') },
|
|
32
|
-
* { path: 'dashboard', canActivate: [authGuard], loadComponent: () => import('./dashboard.page') },
|
|
33
|
-
* { path: 'admin', canActivate: [authGuard, permissionGuard('admin:*')], loadComponent: () => import('./admin.page') },
|
|
34
|
-
* ];
|
|
35
|
-
*
|
|
36
|
-
* // En componentes
|
|
37
|
-
* import { AuthService } from 'valtech-components';
|
|
38
|
-
*
|
|
39
|
-
* @Component({...})
|
|
40
|
-
* export class LoginComponent {
|
|
41
|
-
* private auth = inject(AuthService);
|
|
42
|
-
*
|
|
43
|
-
* async login() {
|
|
44
|
-
* await firstValueFrom(this.auth.signin({ email, password }));
|
|
45
|
-
* if (this.auth.mfaPending().required) {
|
|
46
|
-
* // Mostrar UI de MFA
|
|
47
|
-
* } else {
|
|
48
|
-
* this.router.navigate(['/dashboard']);
|
|
49
|
-
* }
|
|
50
|
-
* }
|
|
51
|
-
*
|
|
52
|
-
* // Habilitar notificaciones push (solicita permisos + registra dispositivo)
|
|
53
|
-
* async enableNotifications() {
|
|
54
|
-
* const result = await this.auth.enableNotifications();
|
|
55
|
-
* if (result.granted) {
|
|
56
|
-
* console.log('Notificaciones habilitadas');
|
|
57
|
-
* }
|
|
58
|
-
* }
|
|
59
|
-
*
|
|
60
|
-
* // Verificar estado de permisos
|
|
61
|
-
* get canReceiveNotifications(): boolean {
|
|
62
|
-
* return this.auth.getNotificationPermissionState() === 'granted';
|
|
63
|
-
* }
|
|
64
|
-
*
|
|
65
|
-
* // En template: usar signals directamente
|
|
66
|
-
* // {{ auth.user()?.email }}
|
|
67
|
-
* // @if (auth.hasPermission('templates:edit')) { ... }
|
|
68
|
-
* }
|
|
69
|
-
* ```
|
|
70
|
-
*/
|
|
71
|
-
// Tipos
|
|
72
|
-
export * from './types';
|
|
73
|
-
// Configuración
|
|
74
|
-
export { VALTECH_AUTH_CONFIG, provideValtechAuth, provideValtechAuthInterceptor, DEFAULT_AUTH_CONFIG, } from './config';
|
|
75
|
-
// Servicio principal
|
|
76
|
-
export { AuthService } from './auth.service';
|
|
77
|
-
// Guards
|
|
78
|
-
export { authGuard, guestGuard, permissionGuard, permissionGuardFromRoute, superAdminGuard, roleGuard, } from './guards';
|
|
79
|
-
// Interceptor (para uso avanzado)
|
|
80
|
-
export { authInterceptor } from './interceptor';
|
|
81
|
-
// Servicios internos (para testing o extensión)
|
|
82
|
-
export { AuthStateService } from './auth-state.service';
|
|
83
|
-
export { TokenService } from './token.service';
|
|
84
|
-
export { AuthStorageService } from './storage.service';
|
|
85
|
-
export { AuthSyncService } from './sync.service';
|
|
86
|
-
// Servicios de gestión de dispositivos y sesiones
|
|
87
|
-
export { DeviceService } from './device.service';
|
|
88
|
-
export { SessionService } from './session.service';
|
|
89
|
-
// OAuth (Login social)
|
|
90
|
-
export { OAuthService } from './oauth.service';
|
|
91
|
-
export { OAuthCallbackComponent } from './oauth-callback.component';
|
|
92
|
-
// Cross-app session handoff (OAuth Authorization Code pattern internal)
|
|
93
|
-
export { HandoffService, HANDOFF_TOKEN_PARAM, HANDOFF_ROUTE_PARAM } from './handoff.service';
|
|
94
|
-
// Active organization switch orchestration
|
|
95
|
-
export { OrgSwitchService } from './org-switch.service';
|
|
96
|
-
// Cross-app cross-org notification click handler
|
|
97
|
-
export { NotificationActionService } from './notification-action.service';
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFFRztBQUVILFFBQVE7QUFDUixjQUFjLFNBQVMsQ0FBQztBQUV4QixnQkFBZ0I7QUFDaEIsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsNkJBQTZCLEVBQzdCLG1CQUFtQixHQUNwQixNQUFNLFVBQVUsQ0FBQztBQUVsQixxQkFBcUI7QUFDckIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLFNBQVM7QUFDVCxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3hCLGVBQWUsRUFDZixTQUFTLEdBQ1YsTUFBTSxVQUFVLENBQUM7QUFFbEIsa0NBQWtDO0FBQ2xDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFaEQsZ0RBQWdEO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFakQsa0RBQWtEO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbkQsdUJBQXVCO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVwRSx3RUFBd0U7QUFDeEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBUTdGLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RCxpREFBaUQ7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFZhbHRlY2ggQXV0aCBTZXJ2aWNlXG4gKlxuICogU2VydmljaW8gZGUgYXV0ZW50aWNhY2nDs24gcmV1dGlsaXphYmxlIHBhcmEgYXBsaWNhY2lvbmVzIEFuZ3VsYXIuXG4gKiBQcm9wb3JjaW9uYSBhdXRlbnRpY2FjacOzbiBjb24gQXV0aFYyLCBNRkEsIHNpbmNyb25pemFjacOzbiBlbnRyZSBwZXN0YcOxYXMsXG4gKiByZWZyZXNoIHByb2FjdGl2byBkZSB0b2tlbnMsIHkgcmVnaXN0cm8gYXV0b23DoXRpY28gZGUgZGlzcG9zaXRpdm9zIHBhcmFcbiAqIHB1c2ggbm90aWZpY2F0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gRW4gbWFpbi50c1xuICogaW1wb3J0IHsgYm9vdHN0cmFwQXBwbGljYXRpb24gfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbiAqIGltcG9ydCB7IHByb3ZpZGVWYWx0ZWNoQXV0aCwgcHJvdmlkZVZhbHRlY2hGaXJlYmFzZSB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKiBpbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbiAqXG4gKiBib290c3RyYXBBcHBsaWNhdGlvbihBcHBDb21wb25lbnQsIHtcbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAgcHJvdmlkZVZhbHRlY2hGaXJlYmFzZShlbnZpcm9ubWVudC5maXJlYmFzZSksXG4gKiAgICAgcHJvdmlkZVZhbHRlY2hBdXRoKHtcbiAqICAgICAgIGFwaVVybDogZW52aXJvbm1lbnQuYXBpVXJsLFxuICogICAgICAgZW5hYmxlRmlyZWJhc2VJbnRlZ3JhdGlvbjogdHJ1ZSxcbiAqICAgICAgIGVuYWJsZURldmljZVJlZ2lzdHJhdGlvbjogdHJ1ZSwgLy8gQXV0by1yZWdpc3RyYSBkaXNwb3NpdGl2b3MgcGFyYSBwdXNoXG4gKiAgICAgfSksXG4gKiAgIF0sXG4gKiB9KTtcbiAqXG4gKiAvLyBFbiBhcHAucm91dGVzLnRzXG4gKiBpbXBvcnQgeyBhdXRoR3VhcmQsIGd1ZXN0R3VhcmQsIHBlcm1pc3Npb25HdWFyZCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHsgcGF0aDogJ2xvZ2luJywgY2FuQWN0aXZhdGU6IFtndWVzdEd1YXJkXSwgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2xvZ2luLnBhZ2UnKSB9LFxuICogICB7IHBhdGg6ICdkYXNoYm9hcmQnLCBjYW5BY3RpdmF0ZTogW2F1dGhHdWFyZF0sIGxvYWRDb21wb25lbnQ6ICgpID0+IGltcG9ydCgnLi9kYXNoYm9hcmQucGFnZScpIH0sXG4gKiAgIHsgcGF0aDogJ2FkbWluJywgY2FuQWN0aXZhdGU6IFthdXRoR3VhcmQsIHBlcm1pc3Npb25HdWFyZCgnYWRtaW46KicpXSwgbG9hZENvbXBvbmVudDogKCkgPT4gaW1wb3J0KCcuL2FkbWluLnBhZ2UnKSB9LFxuICogXTtcbiAqXG4gKiAvLyBFbiBjb21wb25lbnRlc1xuICogaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIEBDb21wb25lbnQoey4uLn0pXG4gKiBleHBvcnQgY2xhc3MgTG9naW5Db21wb25lbnQge1xuICogICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICpcbiAqICAgYXN5bmMgbG9naW4oKSB7XG4gKiAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLnNpZ25pbih7IGVtYWlsLCBwYXNzd29yZCB9KSk7XG4gKiAgICAgaWYgKHRoaXMuYXV0aC5tZmFQZW5kaW5nKCkucmVxdWlyZWQpIHtcbiAqICAgICAgIC8vIE1vc3RyYXIgVUkgZGUgTUZBXG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Rhc2hib2FyZCddKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKiAgIC8vIEhhYmlsaXRhciBub3RpZmljYWNpb25lcyBwdXNoIChzb2xpY2l0YSBwZXJtaXNvcyArIHJlZ2lzdHJhIGRpc3Bvc2l0aXZvKVxuICogICBhc3luYyBlbmFibGVOb3RpZmljYXRpb25zKCkge1xuICogICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuYXV0aC5lbmFibGVOb3RpZmljYXRpb25zKCk7XG4gKiAgICAgaWYgKHJlc3VsdC5ncmFudGVkKSB7XG4gKiAgICAgICBjb25zb2xlLmxvZygnTm90aWZpY2FjaW9uZXMgaGFiaWxpdGFkYXMnKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKiAgIC8vIFZlcmlmaWNhciBlc3RhZG8gZGUgcGVybWlzb3NcbiAqICAgZ2V0IGNhblJlY2VpdmVOb3RpZmljYXRpb25zKCk6IGJvb2xlYW4ge1xuICogICAgIHJldHVybiB0aGlzLmF1dGguZ2V0Tm90aWZpY2F0aW9uUGVybWlzc2lvblN0YXRlKCkgPT09ICdncmFudGVkJztcbiAqICAgfVxuICpcbiAqICAgLy8gRW4gdGVtcGxhdGU6IHVzYXIgc2lnbmFscyBkaXJlY3RhbWVudGVcbiAqICAgLy8ge3sgYXV0aC51c2VyKCk/LmVtYWlsIH19XG4gKiAgIC8vIEBpZiAoYXV0aC5oYXNQZXJtaXNzaW9uKCd0ZW1wbGF0ZXM6ZWRpdCcpKSB7IC4uLiB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vLyBUaXBvc1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5cbi8vIENvbmZpZ3VyYWNpw7NuXG5leHBvcnQge1xuICBWQUxURUNIX0FVVEhfQ09ORklHLFxuICBwcm92aWRlVmFsdGVjaEF1dGgsXG4gIHByb3ZpZGVWYWx0ZWNoQXV0aEludGVyY2VwdG9yLFxuICBERUZBVUxUX0FVVEhfQ09ORklHLFxufSBmcm9tICcuL2NvbmZpZyc7XG5cbi8vIFNlcnZpY2lvIHByaW5jaXBhbFxuZXhwb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5cbi8vIEd1YXJkc1xuZXhwb3J0IHtcbiAgYXV0aEd1YXJkLFxuICBndWVzdEd1YXJkLFxuICBwZXJtaXNzaW9uR3VhcmQsXG4gIHBlcm1pc3Npb25HdWFyZEZyb21Sb3V0ZSxcbiAgc3VwZXJBZG1pbkd1YXJkLFxuICByb2xlR3VhcmQsXG59IGZyb20gJy4vZ3VhcmRzJztcblxuLy8gSW50ZXJjZXB0b3IgKHBhcmEgdXNvIGF2YW56YWRvKVxuZXhwb3J0IHsgYXV0aEludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmNlcHRvcic7XG5cbi8vIFNlcnZpY2lvcyBpbnRlcm5vcyAocGFyYSB0ZXN0aW5nIG8gZXh0ZW5zacOzbilcbmV4cG9ydCB7IEF1dGhTdGF0ZVNlcnZpY2UgfSBmcm9tICcuL2F1dGgtc3RhdGUuc2VydmljZSc7XG5leHBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tICcuL3Rva2VuLnNlcnZpY2UnO1xuZXhwb3J0IHsgQXV0aFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0IHsgQXV0aFN5bmNTZXJ2aWNlIH0gZnJvbSAnLi9zeW5jLnNlcnZpY2UnO1xuXG4vLyBTZXJ2aWNpb3MgZGUgZ2VzdGnDs24gZGUgZGlzcG9zaXRpdm9zIHkgc2VzaW9uZXNcbmV4cG9ydCB7IERldmljZVNlcnZpY2UgfSBmcm9tICcuL2RldmljZS5zZXJ2aWNlJztcbmV4cG9ydCB7IFNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uLnNlcnZpY2UnO1xuXG4vLyBPQXV0aCAoTG9naW4gc29jaWFsKVxuZXhwb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnLi9vYXV0aC5zZXJ2aWNlJztcbmV4cG9ydCB7IE9BdXRoQ2FsbGJhY2tDb21wb25lbnQgfSBmcm9tICcuL29hdXRoLWNhbGxiYWNrLmNvbXBvbmVudCc7XG5cbi8vIENyb3NzLWFwcCBzZXNzaW9uIGhhbmRvZmYgKE9BdXRoIEF1dGhvcml6YXRpb24gQ29kZSBwYXR0ZXJuIGludGVybmFsKVxuZXhwb3J0IHsgSGFuZG9mZlNlcnZpY2UsIEhBTkRPRkZfVE9LRU5fUEFSQU0sIEhBTkRPRkZfUk9VVEVfUEFSQU0gfSBmcm9tICcuL2hhbmRvZmYuc2VydmljZSc7XG5leHBvcnQgdHlwZSB7XG4gIEhhbmRvZmZDcmVhdGVSZXF1ZXN0LFxuICBIYW5kb2ZmQ3JlYXRlUmVzcG9uc2UsXG4gIEhhbmRvZmZFeGNoYW5nZVJlc3BvbnNlLFxuICBEZXRlY3RBbmRFeGNoYW5nZU9wdGlvbnMsXG59IGZyb20gJy4vaGFuZG9mZi5zZXJ2aWNlJztcblxuLy8gQWN0aXZlIG9yZ2FuaXphdGlvbiBzd2l0Y2ggb3JjaGVzdHJhdGlvblxuZXhwb3J0IHsgT3JnU3dpdGNoU2VydmljZSB9IGZyb20gJy4vb3JnLXN3aXRjaC5zZXJ2aWNlJztcbmV4cG9ydCB0eXBlIHsgT3JnQ2hhbmdlZEV2ZW50LCBTd2l0Y2hPcmdPcHRpb25zIH0gZnJvbSAnLi9vcmctc3dpdGNoLnNlcnZpY2UnO1xuXG4vLyBDcm9zcy1hcHAgY3Jvc3Mtb3JnIG5vdGlmaWNhdGlvbiBjbGljayBoYW5kbGVyXG5leHBvcnQgeyBOb3RpZmljYXRpb25BY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24tYWN0aW9uLnNlcnZpY2UnO1xuZXhwb3J0IHR5cGUgeyBOb3RpZmljYXRpb25PcGVuUmVzdWx0IH0gZnJvbSAnLi9ub3RpZmljYXRpb24tYWN0aW9uLnNlcnZpY2UnO1xuIl19
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { inject } from '@angular/core';
|
|
2
|
-
import { throwError, BehaviorSubject } from 'rxjs';
|
|
3
|
-
import { catchError, filter, take, switchMap, finalize } from 'rxjs/operators';
|
|
4
|
-
import { AuthService } from './auth.service';
|
|
5
|
-
import { VALTECH_AUTH_CONFIG } from './config';
|
|
6
|
-
// Control de estado de refresco (singleton a nivel de módulo)
|
|
7
|
-
let isRefreshing = false;
|
|
8
|
-
const refreshTokenSubject = new BehaviorSubject(null);
|
|
9
|
-
/**
|
|
10
|
-
* Interceptor HTTP que:
|
|
11
|
-
* 1. Agrega header Authorization con Bearer token a requests API
|
|
12
|
-
* 2. Maneja errores 401 refrescando el token automáticamente
|
|
13
|
-
* 3. Encola requests durante el refresco para evitar múltiples refresh
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```typescript
|
|
17
|
-
* // Incluido automáticamente por provideValtechAuth()
|
|
18
|
-
* // Para uso manual:
|
|
19
|
-
* import { provideHttpClient, withInterceptors } from '@angular/common/http';
|
|
20
|
-
* import { authInterceptor } from 'valtech-components';
|
|
21
|
-
*
|
|
22
|
-
* bootstrapApplication(AppComponent, {
|
|
23
|
-
* providers: [
|
|
24
|
-
* provideHttpClient(withInterceptors([authInterceptor])),
|
|
25
|
-
* ],
|
|
26
|
-
* });
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export const authInterceptor = (request, next) => {
|
|
30
|
-
const authService = inject(AuthService);
|
|
31
|
-
const config = inject(VALTECH_AUTH_CONFIG);
|
|
32
|
-
// Omitir requests que no son a nuestra API
|
|
33
|
-
if (!isApiRequest(request, config.apiUrl)) {
|
|
34
|
-
return next(request);
|
|
35
|
-
}
|
|
36
|
-
// Omitir endpoints públicos que no necesitan token
|
|
37
|
-
if (isPublicEndpoint(request, config.authPrefix)) {
|
|
38
|
-
return next(request);
|
|
39
|
-
}
|
|
40
|
-
const accessToken = authService.accessToken();
|
|
41
|
-
// Agregar header de autorización si hay token
|
|
42
|
-
if (accessToken) {
|
|
43
|
-
request = addAuthHeader(request, accessToken);
|
|
44
|
-
}
|
|
45
|
-
return next(request).pipe(catchError((error) => {
|
|
46
|
-
if (error.status === 401 && !isNoRefreshEndpoint(request, config.authPrefix)) {
|
|
47
|
-
return handle401Error(request, next, authService);
|
|
48
|
-
}
|
|
49
|
-
if (error.status === 403) {
|
|
50
|
-
console.error('[ValtechAuth] Permiso denegado:', error.error?.message || 'Acceso prohibido');
|
|
51
|
-
}
|
|
52
|
-
return throwError(() => error);
|
|
53
|
-
}));
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* Agrega header de autorización a la request.
|
|
57
|
-
*/
|
|
58
|
-
function addAuthHeader(request, token) {
|
|
59
|
-
return request.clone({
|
|
60
|
-
setHeaders: {
|
|
61
|
-
Authorization: `Bearer ${token}`,
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Verifica si la request es a nuestra API.
|
|
67
|
-
*/
|
|
68
|
-
function isApiRequest(request, apiUrl) {
|
|
69
|
-
return request.url.startsWith(apiUrl) || request.url.includes('/v2/auth');
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Verifica si la request es a un endpoint público que NO requiere token.
|
|
73
|
-
*/
|
|
74
|
-
function isPublicEndpoint(request, authPrefix) {
|
|
75
|
-
const publicEndpoints = [
|
|
76
|
-
'/signin',
|
|
77
|
-
'/signup',
|
|
78
|
-
'/refresh',
|
|
79
|
-
'/logout',
|
|
80
|
-
'/mfa/verify', // Solo durante login
|
|
81
|
-
];
|
|
82
|
-
return publicEndpoints.some((endpoint) => request.url.includes(`${authPrefix}${endpoint}`));
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Verifica si la request es a un endpoint que NO debe reintentar refresh en 401.
|
|
86
|
-
*/
|
|
87
|
-
function isNoRefreshEndpoint(request, authPrefix) {
|
|
88
|
-
// Endpoints que no deben intentar refresh en 401:
|
|
89
|
-
// - Públicos: signin, signup, refresh, logout
|
|
90
|
-
// - MFA: verify (durante login), confirm (401 = código incorrecto), disable (401 = contraseña incorrecta)
|
|
91
|
-
const noRefreshEndpoints = [
|
|
92
|
-
'/signin',
|
|
93
|
-
'/signup',
|
|
94
|
-
'/refresh',
|
|
95
|
-
'/logout',
|
|
96
|
-
'/mfa/verify',
|
|
97
|
-
'/mfa/confirm',
|
|
98
|
-
'/mfa/disable',
|
|
99
|
-
];
|
|
100
|
-
return noRefreshEndpoints.some((endpoint) => request.url.includes(`${authPrefix}${endpoint}`));
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Maneja errores 401 refrescando el token.
|
|
104
|
-
*/
|
|
105
|
-
function handle401Error(request, next, authService) {
|
|
106
|
-
if (!isRefreshing) {
|
|
107
|
-
isRefreshing = true;
|
|
108
|
-
refreshTokenSubject.next(null);
|
|
109
|
-
return authService.refreshAccessToken().pipe(switchMap((response) => {
|
|
110
|
-
refreshTokenSubject.next(response.accessToken);
|
|
111
|
-
return next(addAuthHeader(request, response.accessToken));
|
|
112
|
-
}), catchError((error) => {
|
|
113
|
-
authService.logout();
|
|
114
|
-
return throwError(() => error);
|
|
115
|
-
}), finalize(() => {
|
|
116
|
-
isRefreshing = false;
|
|
117
|
-
}));
|
|
118
|
-
}
|
|
119
|
-
// Esperar a que termine el refresco en curso
|
|
120
|
-
return refreshTokenSubject.pipe(filter((token) => token !== null), take(1), switchMap((token) => next(addAuthHeader(request, token))));
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVF2QyxPQUFPLEVBQWMsVUFBVSxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFL0MsOERBQThEO0FBQzlELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztBQUN6QixNQUFNLG1CQUFtQixHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQztBQUVyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBc0IsQ0FDaEQsT0FBNkIsRUFDN0IsSUFBbUIsRUFDYSxFQUFFO0lBQ2xDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUUzQywyQ0FBMkM7SUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsVUFBVyxDQUFDLEVBQUUsQ0FBQztRQUNsRCxP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QUMxQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNyQixtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3JCLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDWixZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLE9BQU8sbUJBQW1CLENBQUMsSUFBSSxDQUM3QixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQW1CLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEVBQ2xELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDMUQsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEh0dHBJbnRlcmNlcHRvckZuLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEhhbmRsZXJGbixcbiAgSHR0cEV2ZW50LFxuICBIdHRwRXJyb3JSZXNwb25zZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIHRha2UsIHN3aXRjaE1hcCwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFZBTFRFQ0hfQVVUSF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5cbi8vIENvbnRyb2wgZGUgZXN0YWRvIGRlIHJlZnJlc2NvIChzaW5nbGV0b24gYSBuaXZlbCBkZSBtw7NkdWxvKVxubGV0IGlzUmVmcmVzaGluZyA9IGZhbHNlO1xuY29uc3QgcmVmcmVzaFRva2VuU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbi8qKlxuICogSW50ZXJjZXB0b3IgSFRUUCBxdWU6XG4gKiAxLiBBZ3JlZ2EgaGVhZGVyIEF1dGhvcml6YXRpb24gY29uIEJlYXJlciB0b2tlbiBhIHJlcXVlc3RzIEFQSVxuICogMi4gTWFuZWphIGVycm9yZXMgNDAxIHJlZnJlc2NhbmRvIGVsIHRva2VuIGF1dG9tw6F0aWNhbWVudGVcbiAqIDMuIEVuY29sYSByZXF1ZXN0cyBkdXJhbnRlIGVsIHJlZnJlc2NvIHBhcmEgZXZpdGFyIG3Dumx0aXBsZXMgcmVmcmVzaFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBJbmNsdWlkbyBhdXRvbcOhdGljYW1lbnRlIHBvciBwcm92aWRlVmFsdGVjaEF1dGgoKVxuICogLy8gUGFyYSB1c28gbWFudWFsOlxuICogaW1wb3J0IHsgcHJvdmlkZUh0dHBDbGllbnQsIHdpdGhJbnRlcmNlcHRvcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG4gKiBpbXBvcnQgeyBhdXRoSW50ZXJjZXB0b3IgfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICpcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlSHR0cENsaWVudCh3aXRoSW50ZXJjZXB0b3JzKFthdXRoSW50ZXJjZXB0b3JdKSksXG4gKiAgIF0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgYXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChcbiAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXG4gIG5leHQ6IEh0dHBIYW5kbGVyRm5cbik6IE9ic2VydmFibGU8SHR0cEV2ZW50PHVua25vd24+PiA9PiB7XG4gIGNvbnN0IGF1dGhTZXJ2aWNlID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgY29uc3QgY29uZmlnID0gaW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpO1xuXG4gIC8vIE9taXRpciByZXF1ZXN0cyBxdWUgbm8gc29uIGEgbnVlc3RyYSBBUElcbiAgaWYgKCFpc0FwaVJlcXVlc3QocmVxdWVzdCwgY29uZmlnLmFwaVVybCkpIHtcbiAgICByZXR1cm4gbmV4dChyZXF1ZXN0KTtcbiAgfVxuXG4gIC8vIE9taXRpciBlbmRwb2ludHMgcMO6YmxpY29zIHF1ZSBubyBuZWNlc2l0YW4gdG9rZW5cbiAgaWYgKGlzUHVibGljRW5kcG9pbnQocmVxdWVzdCwgY29uZmlnLmF1dGhQcmVmaXghKSkge1xuICAgIHJldHVybiBuZXh0KHJlcXVlc3QpO1xuICB9XG5cbiAgY29uc3QgYWNjZXNzVG9rZW4gPSBhdXRoU2VydmljZS5hY2Nlc3NUb2tlbigpO1xuXG4gIC8vIEFncmVnYXIgaGVhZGVyIGRlIGF1dG9yaXphY2nDs24gc2kgaGF5IHRva2VuXG4gIGlmIChhY2Nlc3NUb2tlbikge1xuICAgIHJlcXVlc3QgPSBhZGRBdXRoSGVhZGVyKHJlcXVlc3QsIGFjY2Vzc1Rva2VuKTtcbiAgfVxuXG4gIHJldHVybiBuZXh0KHJlcXVlc3QpLnBpcGUoXG4gICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDEgJiYgIWlzTm9SZWZyZXNoRW5kcG9pbnQocmVxdWVzdCwgY29uZmlnLmF1dGhQcmVmaXghKSkge1xuICAgICAgICByZXR1cm4gaGFuZGxlNDAxRXJyb3IocmVxdWVzdCwgbmV4dCwgYXV0aFNlcnZpY2UpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDMpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAnW1ZhbHRlY2hBdXRoXSBQZXJtaXNvIGRlbmVnYWRvOicsXG4gICAgICAgICAgZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgJ0FjY2VzbyBwcm9oaWJpZG8nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICB9KVxuICApO1xufTtcblxuLyoqXG4gKiBBZ3JlZ2EgaGVhZGVyIGRlIGF1dG9yaXphY2nDs24gYSBsYSByZXF1ZXN0LlxuICovXG5mdW5jdGlvbiBhZGRBdXRoSGVhZGVyKFxuICByZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPixcbiAgdG9rZW46IHN0cmluZ1xuKTogSHR0cFJlcXVlc3Q8dW5rbm93bj4ge1xuICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7XG4gICAgc2V0SGVhZGVyczoge1xuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogVmVyaWZpY2Egc2kgbGEgcmVxdWVzdCBlcyBhIG51ZXN0cmEgQVBJLlxuICovXG5mdW5jdGlvbiBpc0FwaVJlcXVlc3QocmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sIGFwaVVybDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiByZXF1ZXN0LnVybC5zdGFydHNXaXRoKGFwaVVybCkgfHwgcmVxdWVzdC51cmwuaW5jbHVkZXMoJy92Mi9hdXRoJyk7XG59XG5cbi8qKlxuICogVmVyaWZpY2Egc2kgbGEgcmVxdWVzdCBlcyBhIHVuIGVuZHBvaW50IHDDumJsaWNvIHF1ZSBOTyByZXF1aWVyZSB0b2tlbi5cbiAqL1xuZnVuY3Rpb24gaXNQdWJsaWNFbmRwb2ludChcbiAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXG4gIGF1dGhQcmVmaXg6IHN0cmluZ1xuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHB1YmxpY0VuZHBvaW50cyA9IFtcbiAgICAnL3NpZ25pbicsXG4gICAgJy9zaWdudXAnLFxuICAgICcvcmVmcmVzaCcsXG4gICAgJy9sb2dvdXQnLFxuICAgICcvbWZhL3ZlcmlmeScsIC8vIFNvbG8gZHVyYW50ZSBsb2dpblxuICBdO1xuICByZXR1cm4gcHVibGljRW5kcG9pbnRzLnNvbWUoKGVuZHBvaW50KSA9PlxuICAgIHJlcXVlc3QudXJsLmluY2x1ZGVzKGAke2F1dGhQcmVmaXh9JHtlbmRwb2ludH1gKVxuICApO1xufVxuXG4vKipcbiAqIFZlcmlmaWNhIHNpIGxhIHJlcXVlc3QgZXMgYSB1biBlbmRwb2ludCBxdWUgTk8gZGViZSByZWludGVudGFyIHJlZnJlc2ggZW4gNDAxLlxuICovXG5mdW5jdGlvbiBpc05vUmVmcmVzaEVuZHBvaW50KFxuICByZXF1ZXN0OiBIdHRwUmVxdWVzdDx1bmtub3duPixcbiAgYXV0aFByZWZpeDogc3RyaW5nXG4pOiBib29sZWFuIHtcbiAgLy8gRW5kcG9pbnRzIHF1ZSBubyBkZWJlbiBpbnRlbnRhciByZWZyZXNoIGVuIDQwMTpcbiAgLy8gLSBQw7pibGljb3M6IHNpZ25pbiwgc2lnbnVwLCByZWZyZXNoLCBsb2dvdXRcbiAgLy8gLSBNRkE6IHZlcmlmeSAoZHVyYW50ZSBsb2dpbiksIGNvbmZpcm0gKDQwMSA9IGPDs2RpZ28gaW5jb3JyZWN0byksIGRpc2FibGUgKDQwMSA9IGNvbnRyYXNlw7FhIGluY29ycmVjdGEpXG4gIGNvbnN0IG5vUmVmcmVzaEVuZHBvaW50cyA9IFtcbiAgICAnL3NpZ25pbicsXG4gICAgJy9zaWdudXAnLFxuICAgICcvcmVmcmVzaCcsXG4gICAgJy9sb2dvdXQnLFxuICAgICcvbWZhL3ZlcmlmeScsXG4gICAgJy9tZmEvY29uZmlybScsXG4gICAgJy9tZmEvZGlzYWJsZScsXG4gIF07XG4gIHJldHVybiBub1JlZnJlc2hFbmRwb2ludHMuc29tZSgoZW5kcG9pbnQpID0+XG4gICAgcmVxdWVzdC51cmwuaW5jbHVkZXMoYCR7YXV0aFByZWZpeH0ke2VuZHBvaW50fWApXG4gICk7XG59XG5cbi8qKlxuICogTWFuZWphIGVycm9yZXMgNDAxIHJlZnJlc2NhbmRvIGVsIHRva2VuLlxuICovXG5mdW5jdGlvbiBoYW5kbGU0MDFFcnJvcihcbiAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8dW5rbm93bj4sXG4gIG5leHQ6IEh0dHBIYW5kbGVyRm4sXG4gIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZVxuKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8dW5rbm93bj4+IHtcbiAgaWYgKCFpc1JlZnJlc2hpbmcpIHtcbiAgICBpc1JlZnJlc2hpbmcgPSB0cnVlO1xuICAgIHJlZnJlc2hUb2tlblN1YmplY3QubmV4dChudWxsKTtcblxuICAgIHJldHVybiBhdXRoU2VydmljZS5yZWZyZXNoQWNjZXNzVG9rZW4oKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICByZWZyZXNoVG9rZW5TdWJqZWN0Lm5leHQocmVzcG9uc2UuYWNjZXNzVG9rZW4pO1xuICAgICAgICByZXR1cm4gbmV4dChhZGRBdXRoSGVhZGVyKHJlcXVlc3QsIHJlc3BvbnNlLmFjY2Vzc1Rva2VuKSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGF1dGhTZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KSxcbiAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgaXNSZWZyZXNoaW5nID0gZmFsc2U7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyBFc3BlcmFyIGEgcXVlIHRlcm1pbmUgZWwgcmVmcmVzY28gZW4gY3Vyc29cbiAgcmV0dXJuIHJlZnJlc2hUb2tlblN1YmplY3QucGlwZShcbiAgICBmaWx0ZXIoKHRva2VuKTogdG9rZW4gaXMgc3RyaW5nID0+IHRva2VuICE9PSBudWxsKSxcbiAgICB0YWtlKDEpLFxuICAgIHN3aXRjaE1hcCgodG9rZW4pID0+IG5leHQoYWRkQXV0aEhlYWRlcihyZXF1ZXN0LCB0b2tlbikpKVxuICApO1xufVxuIl19
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NotificationActionService — orquesta el "click en notificación" cross-app cross-org.
|
|
3
|
-
*
|
|
4
|
-
* Flujo:
|
|
5
|
-
* 1. markAsRead (best-effort, no bloquea)
|
|
6
|
-
* 2. Si appId destino !== appId actual → handoff token + redirect a app destino
|
|
7
|
-
* 3. Si orgId destino !== activeOrg → switchTo(orgId) (sin reload, navega después)
|
|
8
|
-
* 4. router.navigateByUrl(actionRoute)
|
|
9
|
-
*
|
|
10
|
-
* Requiere:
|
|
11
|
-
* - ValtechAuthConfig.appId (identifica la app actual)
|
|
12
|
-
* - ValtechAuthConfig.appUrls (mapa baseUrl para handoff cross-app)
|
|
13
|
-
*/
|
|
14
|
-
import { HttpErrorResponse } from '@angular/common/http';
|
|
15
|
-
import { Inject, Injectable } from '@angular/core';
|
|
16
|
-
import { firstValueFrom } from 'rxjs';
|
|
17
|
-
import { VALTECH_AUTH_CONFIG } from './config';
|
|
18
|
-
import * as i0 from "@angular/core";
|
|
19
|
-
import * as i1 from "./auth.service";
|
|
20
|
-
import * as i2 from "./org-switch.service";
|
|
21
|
-
import * as i3 from "./handoff.service";
|
|
22
|
-
import * as i4 from "../firebase/notifications.service";
|
|
23
|
-
import * as i5 from "@angular/router";
|
|
24
|
-
export class NotificationActionService {
|
|
25
|
-
constructor(config, auth, orgSwitch, handoff, notifications, router) {
|
|
26
|
-
this.config = config;
|
|
27
|
-
this.auth = auth;
|
|
28
|
-
this.orgSwitch = orgSwitch;
|
|
29
|
-
this.handoff = handoff;
|
|
30
|
-
this.notifications = notifications;
|
|
31
|
-
this.router = router;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Abre la notificación: marca como leída, switch-org si toca, navegación local o
|
|
35
|
-
* redirect cross-app vía handoff.
|
|
36
|
-
*
|
|
37
|
-
* No lanza errores hacia la UI — devuelve un resultado descriptivo. Errores
|
|
38
|
-
* técnicos quedan en console.warn.
|
|
39
|
-
*/
|
|
40
|
-
async open(notif) {
|
|
41
|
-
// 1) Mark as read (best-effort, no bloquea el flujo principal)
|
|
42
|
-
if (notif.id && !notif.isRead) {
|
|
43
|
-
this.notifications.markAsRead(notif.id).catch(err => {
|
|
44
|
-
console.warn('[NotificationAction] markAsRead failed', err);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
const route = notif.actionRoute;
|
|
48
|
-
if (!route) {
|
|
49
|
-
return 'no-action-route';
|
|
50
|
-
}
|
|
51
|
-
const currentApp = this.config.appId;
|
|
52
|
-
const targetApp = notif.appId;
|
|
53
|
-
// 2) Cross-app: handoff + full redirect
|
|
54
|
-
//
|
|
55
|
-
// baseUrl resolution priority:
|
|
56
|
-
// (1) response.targetBaseUrl — backend lookup en app-config (preferred, single source of truth)
|
|
57
|
-
// (2) config.appUrls[targetApp] — fallback frontend mientras backend agrega el campo
|
|
58
|
-
if (targetApp && currentApp && targetApp !== currentApp) {
|
|
59
|
-
try {
|
|
60
|
-
const resp = await firstValueFrom(this.handoff.createHandoff({ targetAppId: targetApp, route }));
|
|
61
|
-
const baseUrl = resp.targetBaseUrl ?? this.config.appUrls?.[targetApp];
|
|
62
|
-
if (!baseUrl) {
|
|
63
|
-
console.warn(`[NotificationAction] No baseUrl for app '${targetApp}' — backend did not return targetBaseUrl and no appUrls fallback configured`);
|
|
64
|
-
return 'cross-app-unconfigured';
|
|
65
|
-
}
|
|
66
|
-
const url = this.buildHandoffUrl(baseUrl, resp.token, route);
|
|
67
|
-
if (typeof window !== 'undefined') {
|
|
68
|
-
window.location.href = url;
|
|
69
|
-
}
|
|
70
|
-
return 'redirected-cross-app';
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
const msg = err instanceof HttpErrorResponse ? err.message : String(err);
|
|
74
|
-
console.warn('[NotificationAction] createHandoff failed:', msg);
|
|
75
|
-
return 'handoff-failed';
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// 3) Same app — switch-org si toca (sin reload — la navegación posterior monta page fresh)
|
|
79
|
-
let switched = false;
|
|
80
|
-
if (notif.orgId) {
|
|
81
|
-
const active = this.activeOrg();
|
|
82
|
-
if (active && active !== notif.orgId) {
|
|
83
|
-
await this.orgSwitch.switchTo(notif.orgId);
|
|
84
|
-
switched = true;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// 4) Navigate local
|
|
88
|
-
await this.router.navigateByUrl(route);
|
|
89
|
-
return switched ? 'navigated-after-switch-org' : 'navigated';
|
|
90
|
-
}
|
|
91
|
-
activeOrg() {
|
|
92
|
-
const user = this.auth.user();
|
|
93
|
-
return (user?.activeOrgId ??
|
|
94
|
-
user?.activeOrg ??
|
|
95
|
-
'');
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Construye URL absoluta para handoff cross-app preservando pathname y otros
|
|
99
|
-
* params existentes de la baseUrl.
|
|
100
|
-
*/
|
|
101
|
-
buildHandoffUrl(baseUrl, token, route) {
|
|
102
|
-
const url = new URL(baseUrl);
|
|
103
|
-
url.searchParams.set('handoff', token);
|
|
104
|
-
url.searchParams.set('route', route);
|
|
105
|
-
return url.toString();
|
|
106
|
-
}
|
|
107
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NotificationActionService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: i1.AuthService }, { token: i2.OrgSwitchService }, { token: i3.HandoffService }, { token: i4.NotificationsService }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
108
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NotificationActionService, providedIn: 'root' }); }
|
|
109
|
-
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NotificationActionService, decorators: [{
|
|
111
|
-
type: Injectable,
|
|
112
|
-
args: [{ providedIn: 'root' }]
|
|
113
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
114
|
-
type: Inject,
|
|
115
|
-
args: [VALTECH_AUTH_CONFIG]
|
|
116
|
-
}] }, { type: i1.AuthService }, { type: i2.OrgSwitchService }, { type: i3.HandoffService }, { type: i4.NotificationsService }, { type: i5.Router }] });
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWFjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL25vdGlmaWNhdGlvbi1hY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7QUFFSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3RDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7OztBQWdCL0MsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxZQUN1QyxNQUF5QixFQUN0RCxJQUFpQixFQUNqQixTQUEyQixFQUMzQixPQUF1QixFQUN2QixhQUFtQyxFQUNuQyxNQUFjO1FBTGUsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDdEQsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUNyQixDQUFDO0lBRUo7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUEyQjtRQUNwQywrREFBK0Q7UUFDL0QsSUFBSSxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2xELE9BQU8sQ0FBQyxJQUFJLENBQUMsd0NBQXdDLEVBQUUs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UUFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQS9GVSx5QkFBeUIsa0JBRTFCLG1CQUFtQjttSEFGbEIseUJBQXlCLGNBRFosTUFBTTs7NEZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUc3QixNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSDigJQgb3JxdWVzdGEgZWwgXCJjbGljayBlbiBub3RpZmljYWNpw7NuXCIgY3Jvc3MtYXBwIGNyb3NzLW9yZy5cbiAqXG4gKiBGbHVqbzpcbiAqICAgMS4gbWFya0FzUmVhZCAoYmVzdC1lZmZvcnQsIG5vIGJsb3F1ZWEpXG4gKiAgIDIuIFNpIGFwcElkIGRlc3Rpbm8gIT09IGFwcElkIGFjdHVhbCDihpIgaGFuZG9mZiB0b2tlbiArIHJlZGlyZWN0IGEgYXBwIGRlc3Rpbm9cbiAqICAgMy4gU2kgb3JnSWQgZGVzdGlubyAhPT0gYWN0aXZlT3JnIOKGkiBzd2l0Y2hUbyhvcmdJZCkgKHNpbiByZWxvYWQsIG5hdmVnYSBkZXNwdcOpcylcbiAqICAgNC4gcm91dGVyLm5hdmlnYXRlQnlVcmwoYWN0aW9uUm91dGUpXG4gKlxuICogUmVxdWllcmU6XG4gKiAgIC0gVmFsdGVjaEF1dGhDb25maWcuYXBwSWQgIChpZGVudGlmaWNhIGxhIGFwcCBhY3R1YWwpXG4gKiAgIC0gVmFsdGVjaEF1dGhDb25maWcuYXBwVXJscyAobWFwYSBiYXNlVXJsIHBhcmEgaGFuZG9mZiBjcm9zcy1hcHApXG4gKi9cblxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFZBTFRFQ0hfQVVUSF9DT05GSUcgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBIYW5kb2ZmU2VydmljZSB9IGZyb20gJy4vaGFuZG9mZi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ1N3aXRjaFNlcnZpY2UgfSBmcm9tICcuL29yZy1zd2l0Y2guc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoQXV0aENvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uRG9jdW1lbnQsIE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vZmlyZWJhc2Uvbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcblxuLyoqIFJlc3VsdGFkbyBkZXNjcmlwdGl2byBkZWwgb3BlbigpIOKAlCDDunRpbCBwYXJhIHRlc3RzIHkgdGVsZW1ldHLDrWEuICovXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25PcGVuUmVzdWx0ID1cbiAgfCAnbmF2aWdhdGVkJ1xuICB8ICduYXZpZ2F0ZWQtYWZ0ZXItc3dpdGNoLW9yZydcbiAgfCAncmVkaXJlY3RlZC1jcm9zcy1hcHAnXG4gIHwgJ25vLWFjdGlvbi1yb3V0ZSdcbiAgfCAnY3Jvc3MtYXBwLXVuY29uZmlndXJlZCdcbiAgfCAnaGFuZG9mZi1mYWlsZWQnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkFjdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQXV0aENvbmZpZyxcbiAgICBwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3JnU3dpdGNoOiBPcmdTd2l0Y2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgaGFuZG9mZjogSGFuZG9mZlNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25zOiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICkge31cblxuICAvKipcbiAgICogQWJyZSBsYSBub3RpZmljYWNpw7NuOiBtYXJjYSBjb21vIGxlw61kYSwgc3dpdGNoLW9yZyBzaSB0b2NhLCBuYXZlZ2FjacOzbiBsb2NhbCBvXG4gICAqIHJlZGlyZWN0IGNyb3NzLWFwcCB2w61hIGhhbmRvZmYuXG4gICAqXG4gICAqIE5vIGxhbnphIGVycm9yZXMgaGFjaWEgbGEgVUkg4oCUIGRldnVlbHZlIHVuIHJlc3VsdGFkbyBkZXNjcmlwdGl2by4gRXJyb3Jlc1xuICAgKiB0w6ljbmljb3MgcXVlZGFuIGVuIGNvbnNvbGUud2Fybi5cbiAgICovXG4gIGFzeW5jIG9wZW4obm90aWY6IE5vdGlmaWNhdGlvbkRvY3VtZW50KTogUHJvbWlzZTxOb3RpZmljYXRpb25PcGVuUmVzdWx0PiB7XG4gICAgLy8gMSkgTWFyayBhcyByZWFkIChiZXN0LWVmZm9ydCwgbm8gYmxvcXVlYSBlbCBmbHVqbyBwcmluY2lwYWwpXG4gICAgaWYgKG5vdGlmLmlkICYmICFub3RpZi5pc1JlYWQpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9ucy5tYXJrQXNSZWFkKG5vdGlmLmlkKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tOb3RpZmljYXRpb25BY3Rpb25dIG1hcmtBc1JlYWQgZmFpbGVkJywgZXJyKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHJvdXRlID0gbm90aWYuYWN0aW9uUm91dGU7XG4gICAgaWYgKCFyb3V0ZSkge1xuICAgICAgcmV0dXJuICduby1hY3Rpb24tcm91dGUnO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRBcHAgPSB0aGlzLmNvbmZpZy5hcHBJZDtcbiAgICBjb25zdCB0YXJnZXRBcHAgPSBub3RpZi5hcHBJZDtcblxuICAgIC8vIDIpIENyb3NzLWFwcDogaGFuZG9mZiArIGZ1bGwgcmVkaXJlY3RcbiAgICAvL1xuICAgIC8vIGJhc2VVcmwgcmVzb2x1dGlvbiBwcmlvcml0eTpcbiAgICAvLyAgICgxKSByZXNwb25zZS50YXJnZXRCYXNlVXJsICDigJQgYmFja2VuZCBsb29rdXAgZW4gYXBwLWNvbmZpZyAocHJlZmVycmVkLCBzaW5nbGUgc291cmNlIG9mIHRydXRoKVxuICAgIC8vICAgKDIpIGNvbmZpZy5hcHBVcmxzW3RhcmdldEFwcF0g4oCUIGZhbGxiYWNrIGZyb250ZW5kIG1pZW50cmFzIGJhY2tlbmQgYWdyZWdhIGVsIGNhbXBvXG4gICAgaWYgKHRhcmdldEFwcCAmJiBjdXJyZW50QXBwICYmIHRhcmdldEFwcCAhPT0gY3VycmVudEFwcCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICAgIHRoaXMuaGFuZG9mZi5jcmVhdGVIYW5kb2ZmKHsgdGFyZ2V0QXBwSWQ6IHRhcmdldEFwcCwgcm91dGUgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYmFzZVVybCA9IHJlc3AudGFyZ2V0QmFzZVVybCA/PyB0aGlzLmNvbmZpZy5hcHBVcmxzPy5bdGFyZ2V0QXBwXTtcbiAgICAgICAgaWYgKCFiYXNlVXJsKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgYFtOb3RpZmljYXRpb25BY3Rpb25dIE5vIGJhc2VVcmwgZm9yIGFwcCAnJHt0YXJnZXRBcHB9JyDigJQgYmFja2VuZCBkaWQgbm90IHJldHVybiB0YXJnZXRCYXNlVXJsIGFuZCBubyBhcHBVcmxzIGZhbGxiYWNrIGNvbmZpZ3VyZWRgXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gJ2Nyb3NzLWFwcC11bmNvbmZpZ3VyZWQnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRIYW5kb2ZmVXJsKGJhc2VVcmwsIHJlc3AudG9rZW4sIHJvdXRlKTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICdyZWRpcmVjdGVkLWNyb3NzLWFwcCc7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc3QgbXNnID0gZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgPyBlcnIubWVzc2FnZSA6IFN0cmluZyhlcnIpO1xuICAgICAgICBjb25zb2xlLndhcm4oJ1tOb3RpZmljYXRpb25BY3Rpb25dIGNyZWF0ZUhhbmRvZmYgZmFpbGVkOicsIG1zZyk7XG4gICAgICAgIHJldHVybiAnaGFuZG9mZi1mYWlsZWQnO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIDMpIFNhbWUgYXBwIOKAlCBzd2l0Y2gtb3JnIHNpIHRvY2EgKHNpbiByZWxvYWQg4oCUIGxhIG5hdmVnYWNpw7NuIHBvc3RlcmlvciBtb250YSBwYWdlIGZyZXNoKVxuICAgIGxldCBzd2l0Y2hlZCA9IGZhbHNlO1xuICAgIGlmIChub3RpZi5vcmdJZCkge1xuICAgICAgY29uc3QgYWN0aXZlID0gdGhpcy5hY3RpdmVPcmcoKTtcbiAgICAgIGlmIChhY3RpdmUgJiYgYWN0aXZlICE9PSBub3RpZi5vcmdJZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm9yZ1N3aXRjaC5zd2l0Y2hUbyhub3RpZi5vcmdJZCk7XG4gICAgICAgIHN3aXRjaGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyA0KSBOYXZpZ2F0ZSBsb2NhbFxuICAgIGF3YWl0IHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwocm91dGUpO1xuICAgIHJldHVybiBzd2l0Y2hlZCA/ICduYXZpZ2F0ZWQtYWZ0ZXItc3dpdGNoLW9yZycgOiAnbmF2aWdhdGVkJztcbiAgfVxuXG4gIHByaXZhdGUgYWN0aXZlT3JnKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aC51c2VyKCk7XG4gICAgcmV0dXJuIChcbiAgICAgICh1c2VyIGFzIHsgYWN0aXZlT3JnSWQ/OiBzdHJpbmc7IGFjdGl2ZU9yZz86IHN0cmluZyB9IHwgbnVsbCk/LmFjdGl2ZU9yZ0lkID8/XG4gICAgICAodXNlciBhcyB7IGFjdGl2ZU9yZ0lkPzogc3RyaW5nOyBhY3RpdmVPcmc/OiBzdHJpbmcgfSB8IG51bGwpPy5hY3RpdmVPcmcgPz9cbiAgICAgICcnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1eWUgVVJMIGFic29sdXRhIHBhcmEgaGFuZG9mZiBjcm9zcy1hcHAgcHJlc2VydmFuZG8gcGF0aG5hbWUgeSBvdHJvc1xuICAgKiBwYXJhbXMgZXhpc3RlbnRlcyBkZSBsYSBiYXNlVXJsLlxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZEhhbmRvZmZVcmwoYmFzZVVybDogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCByb3V0ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGJhc2VVcmwpO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdoYW5kb2ZmJywgdG9rZW4pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyb3V0ZScsIHJvdXRlKTtcbiAgICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Componente de callback para OAuth.
|
|
6
|
-
*
|
|
7
|
-
* Este componente procesa la respuesta del servidor OAuth y envía
|
|
8
|
-
* los tokens a la ventana padre via postMessage.
|
|
9
|
-
*
|
|
10
|
-
* Debe agregarse a las rutas de la aplicación:
|
|
11
|
-
* ```typescript
|
|
12
|
-
* // app.routes.ts
|
|
13
|
-
* import { OAuthCallbackComponent } from 'valtech-components';
|
|
14
|
-
*
|
|
15
|
-
* export const routes: Routes = [
|
|
16
|
-
* { path: 'auth/oauth/callback', component: OAuthCallbackComponent },
|
|
17
|
-
* // ... otras rutas
|
|
18
|
-
* ];
|
|
19
|
-
* ```
|
|
20
|
-
*
|
|
21
|
-
* El backend redirige a esta ruta con los tokens en query params:
|
|
22
|
-
* `/auth/oauth/callback?access_token=xxx&refresh_token=xxx&expires_in=900`
|
|
23
|
-
*
|
|
24
|
-
* O con error:
|
|
25
|
-
* `/auth/oauth/callback?error=INVALID_CODE&error_description=...`
|
|
26
|
-
*/
|
|
27
|
-
export class OAuthCallbackComponent {
|
|
28
|
-
constructor() {
|
|
29
|
-
this.message = 'Procesando autenticación...';
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
this.processCallback();
|
|
33
|
-
}
|
|
34
|
-
processCallback() {
|
|
35
|
-
const params = new URLSearchParams(window.location.search);
|
|
36
|
-
// DEBUG: Log all received params
|
|
37
|
-
console.log('[OAuthCallback] URL params received:', {
|
|
38
|
-
url: window.location.href,
|
|
39
|
-
hasAccessToken: params.has('access_token'),
|
|
40
|
-
hasRefreshToken: params.has('refresh_token'),
|
|
41
|
-
hasFirebaseToken: params.has('firebase_token'),
|
|
42
|
-
firebaseTokenLength: params.get('firebase_token')?.length || 0,
|
|
43
|
-
error: params.get('error'),
|
|
44
|
-
});
|
|
45
|
-
// Verificar si hay error
|
|
46
|
-
const error = params.get('error');
|
|
47
|
-
if (error) {
|
|
48
|
-
this.sendToParent({
|
|
49
|
-
type: 'oauth-callback',
|
|
50
|
-
error: {
|
|
51
|
-
code: error,
|
|
52
|
-
message: params.get('error_description') || 'Error de autenticación',
|
|
53
|
-
},
|
|
54
|
-
});
|
|
55
|
-
this.message = 'Error de autenticación';
|
|
56
|
-
this.closeAfterDelay();
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
// Extraer tokens
|
|
60
|
-
const accessToken = params.get('access_token');
|
|
61
|
-
const refreshToken = params.get('refresh_token');
|
|
62
|
-
const expiresIn = params.get('expires_in');
|
|
63
|
-
const firebaseToken = params.get('firebase_token');
|
|
64
|
-
if (!accessToken || !refreshToken) {
|
|
65
|
-
this.sendToParent({
|
|
66
|
-
type: 'oauth-callback',
|
|
67
|
-
error: {
|
|
68
|
-
code: 'MISSING_TOKENS',
|
|
69
|
-
message: 'No se recibieron los tokens de autenticación',
|
|
70
|
-
},
|
|
71
|
-
});
|
|
72
|
-
this.message = 'Error: tokens no recibidos';
|
|
73
|
-
this.closeAfterDelay();
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
// Extraer roles y permisos (pueden venir como JSON en base64)
|
|
77
|
-
let roles;
|
|
78
|
-
let permissions;
|
|
79
|
-
const rolesParam = params.get('roles');
|
|
80
|
-
const permissionsParam = params.get('permissions');
|
|
81
|
-
if (rolesParam) {
|
|
82
|
-
try {
|
|
83
|
-
roles = JSON.parse(atob(rolesParam));
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
roles = rolesParam.split(',');
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (permissionsParam) {
|
|
90
|
-
try {
|
|
91
|
-
permissions = JSON.parse(atob(permissionsParam));
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
permissions = permissionsParam.split(',');
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
// Enviar tokens a la ventana padre
|
|
98
|
-
const result = {
|
|
99
|
-
accessToken,
|
|
100
|
-
refreshToken,
|
|
101
|
-
expiresIn: expiresIn ? parseInt(expiresIn, 10) : 900,
|
|
102
|
-
firebaseToken: firebaseToken || undefined,
|
|
103
|
-
roles,
|
|
104
|
-
permissions,
|
|
105
|
-
isNewUser: params.get('is_new_user') === 'true',
|
|
106
|
-
linked: params.get('linked') === 'true',
|
|
107
|
-
};
|
|
108
|
-
this.sendToParent({
|
|
109
|
-
type: 'oauth-callback',
|
|
110
|
-
tokens: result,
|
|
111
|
-
});
|
|
112
|
-
this.message = 'Autenticación exitosa';
|
|
113
|
-
this.closeAfterDelay();
|
|
114
|
-
}
|
|
115
|
-
sendToParent(data) {
|
|
116
|
-
// Siempre guardar en localStorage como fallback (para COOP issues)
|
|
117
|
-
try {
|
|
118
|
-
localStorage.setItem('oauth_callback_data', JSON.stringify(data));
|
|
119
|
-
localStorage.setItem('oauth_callback_timestamp', Date.now().toString());
|
|
120
|
-
console.log('[OAuthCallback] Saved to localStorage as fallback');
|
|
121
|
-
}
|
|
122
|
-
catch (e) {
|
|
123
|
-
console.warn('[OAuthCallback] Could not save to localStorage:', e);
|
|
124
|
-
}
|
|
125
|
-
// Intentar postMessage (puede fallar por COOP)
|
|
126
|
-
try {
|
|
127
|
-
if (window.opener && !window.opener.closed) {
|
|
128
|
-
window.opener.postMessage(data, window.location.origin);
|
|
129
|
-
console.log('[OAuthCallback] postMessage sent to opener');
|
|
130
|
-
}
|
|
131
|
-
else if (window.parent !== window) {
|
|
132
|
-
window.parent.postMessage(data, window.location.origin);
|
|
133
|
-
console.log('[OAuthCallback] postMessage sent to parent');
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
console.log('[OAuthCallback] No opener/parent available, using localStorage only');
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
catch (e) {
|
|
140
|
-
// COOP blocks postMessage - localStorage fallback already saved
|
|
141
|
-
console.warn('[OAuthCallback] postMessage blocked (COOP), using localStorage fallback:', e);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
closeAfterDelay() {
|
|
145
|
-
// Dar tiempo para que el mensaje se envíe antes de cerrar
|
|
146
|
-
setTimeout(() => {
|
|
147
|
-
if (window.opener) {
|
|
148
|
-
window.close();
|
|
149
|
-
}
|
|
150
|
-
}, 500);
|
|
151
|
-
}
|
|
152
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAuthCallbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
153
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: OAuthCallbackComponent, isStandalone: true, selector: "val-oauth-callback", ngImport: i0, template: `
|
|
154
|
-
<div class="oauth-callback">
|
|
155
|
-
<div class="oauth-callback__spinner"></div>
|
|
156
|
-
<p class="oauth-callback__text">{{ message }}</p>
|
|
157
|
-
</div>
|
|
158
|
-
`, isInline: true, styles: [".oauth-callback{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.oauth-callback__spinner{width:40px;height:40px;border:3px solid #f3f3f3;border-top:3px solid #3498db;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.oauth-callback__text{color:#666;font-size:14px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
159
|
-
}
|
|
160
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAuthCallbackComponent, decorators: [{
|
|
161
|
-
type: Component,
|
|
162
|
-
args: [{ selector: 'val-oauth-callback', standalone: true, imports: [CommonModule], template: `
|
|
163
|
-
<div class="oauth-callback">
|
|
164
|
-
<div class="oauth-callback__spinner"></div>
|
|
165
|
-
<p class="oauth-callback__text">{{ message }}</p>
|
|
166
|
-
</div>
|
|
167
|
-
`, styles: [".oauth-callback{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.oauth-callback__spinner{width:40px;height:40px;border:3px solid #f3f3f3;border-top:3px solid #3498db;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:16px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.oauth-callback__text{color:#666;font-size:14px}\n"] }]
|
|
168
|
-
}] });
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtY2FsbGJhY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL29hdXRoLWNhbGxiYWNrLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFHL0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUEwQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQXpDbkM7UUEwQ0UsWUFBTyxHQUFHLDZCQUE2QixDQUFDO0tBb0l6QztJQWxJQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFM0QsaUNBQWlDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLEVBQUU7WUFDbEQsR0FBRyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUN6QixjQUFjLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7WUFDMUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQzVDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7WUFDOUMsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDO1lBQzlELEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztTQUMzQixDQUFDLENBQUM7UUFFSCx5QkFBeUI7UUFDekIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNsQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDaEIsSUFBSSxFQUFFLGdCQUFnQjtnQkFDdEIsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRSxLQUFLO29CQUNYLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksd0JBQXdCO2lCQUN2RDthQUNoQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLHdCQUF3QixDQUFDO1lBQ3hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUVELGlCQUFpQjtRQUNqQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakQsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzQyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFbkQsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQ2hCLElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLEtBQUssRUFBRTtvQkFDTCxJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixPQUFPLEVBQUUsOENBQThDO2lCQUMxQzthQUNoQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsT0FBTyxHQUFHLDRCQUE0QixDQUFDO1lBQzVDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUN2QixPQUFPO1FBQ1QsQ0FBQztRQUVELDhEQUE4RDtRQUM5RCxJQUFJLEtBQTJCLENBQUM7UUFDaEMsSUFBSSxXQUFpQyxDQUFDO1FBRXRDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRW5ELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUM7Z0JBQ0gsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDdkMsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUM7Z0JBQ0gsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsTUFBTSxNQUFNLEdBQWdCO1lBQzFCLFdBQVc7WUFDWCxZQUFZO1lBQ1osU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztZQUNwRCxhQUFhLEVBQUUsYUFBYSxJQUFJLFNBQVM7WUFDekMsS0FBSztZQUNMLFdBQVc7WUFDWCxTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxNQUFNO1lBQy9DLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLE1BQU07U0FDeEMsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDaEIsSUFBSSxFQUFFLGdCQUFnQjtZQUN0QixNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsdUJBQXVCLENBQUM7UUFDdkMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxZQUFZLENBQUMsSUFBdUI7UUFDMUMsbUVBQW1FO1FBQ25FLElBQUksQ0FBQztZQUNILFlBQVksQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLFlBQVksQ0FBQyxPQUFPLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDeEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxpREFBaUQsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBRUQsK0NBQStDO1FBQy9DLElBQUksQ0FBQztZQUNILElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4RCxPQUFPLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDNUQsQ0FBQztpQkFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4RCxPQUFPLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDNUQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMscUVBQXFFLENBQUMsQ0FBQztZQUNyRixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxnRUFBZ0U7WUFDaEUsT0FBTyxDQUFDLElBQUksQ0FBQywwRUFBMEUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RixDQUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsMERBQTBEO1FBQzFELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDOytHQXBJVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiw4RUFyQ3ZCOzs7OztHQUtULDhoQkFOUyxZQUFZOzs0RkFzQ1gsc0JBQXNCO2tCQXpDbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2I7Ozs7O0dBS1QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE9BdXRoQ2FsbGJhY2tEYXRhLCBPQXV0aFJlc3VsdCwgT0F1dGhFcnJvciB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIENvbXBvbmVudGUgZGUgY2FsbGJhY2sgcGFyYSBPQXV0aC5cbiAqXG4gKiBFc3RlIGNvbXBvbmVudGUgcHJvY2VzYSBsYSByZXNwdWVzdGEgZGVsIHNlcnZpZG9yIE9BdXRoIHkgZW52w61hXG4gKiBsb3MgdG9rZW5zIGEgbGEgdmVudGFuYSBwYWRyZSB2aWEgcG9zdE1lc3NhZ2UuXG4gKlxuICogRGViZSBhZ3JlZ2Fyc2UgYSBsYXMgcnV0YXMgZGUgbGEgYXBsaWNhY2nDs246XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBhcHAucm91dGVzLnRzXG4gKiBpbXBvcnQgeyBPQXV0aENhbGxiYWNrQ29tcG9uZW50IH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBleHBvcnQgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHsgcGF0aDogJ2F1dGgvb2F1dGgvY2FsbGJhY2snLCBjb21wb25lbnQ6IE9BdXRoQ2FsbGJhY2tDb21wb25lbnQgfSxcbiAqICAgLy8gLi4uIG90cmFzIHJ1dGFzXG4gKiBdO1xuICogYGBgXG4gKlxuICogRWwgYmFja2VuZCByZWRpcmlnZSBhIGVzdGEgcnV0YSBjb24gbG9zIHRva2VucyBlbiBxdWVyeSBwYXJhbXM6XG4gKiBgL2F1dGgvb2F1dGgvY2FsbGJhY2s/YWNjZXNzX3Rva2VuPXh4eCZyZWZyZXNoX3Rva2VuPXh4eCZleHBpcmVzX2luPTkwMGBcbiAqXG4gKiBPIGNvbiBlcnJvcjpcbiAqIGAvYXV0aC9vYXV0aC9jYWxsYmFjaz9lcnJvcj1JTlZBTElEX0NPREUmZXJyb3JfZGVzY3JpcHRpb249Li4uYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtb2F1dGgtY2FsbGJhY2snLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwib2F1dGgtY2FsbGJhY2tcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJvYXV0aC1jYWxsYmFja19fc3Bpbm5lclwiPjwvZGl2PlxuICAgICAgPHAgY2xhc3M9XCJvYXV0aC1jYWxsYmFja19fdGV4dFwiPnt7IG1lc3NhZ2UgfX08L3A+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW2BcbiAgICAub2F1dGgtY2FsbGJhY2sge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBoZWlnaHQ6IDEwMHZoO1xuICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmO1xuICAgIH1cblxuICAgIC5vYXV0aC1jYWxsYmFja19fc3Bpbm5lciB7XG4gICAgICB3aWR0aDogNDBweDtcbiAgICAgIGhlaWdodDogNDBweDtcbiAgICAgIGJvcmRlcjogM3B4IHNvbGlkICNmM2YzZjM7XG4gICAgICBib3JkZXItdG9wOiAzcHggc29saWQgIzM0OThkYjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgIGFuaW1hdGlvbjogc3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgIH1cblxuICAgIEBrZXlmcmFtZXMgc3BpbiB7XG4gICAgICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9XG4gICAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxuICAgIH1cblxuICAgIC5vYXV0aC1jYWxsYmFja19fdGV4dCB7XG4gICAgICBjb2xvcjogIzY2NjtcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICB9XG4gIGBdLFxufSlcbmV4cG9ydCBjbGFzcyBPQXV0aENhbGxiYWNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbWVzc2FnZSA9ICdQcm9jZXNhbmRvIGF1dGVudGljYWNpw7NuLi4uJztcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnByb2Nlc3NDYWxsYmFjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzQ2FsbGJhY2soKTogdm9pZCB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcblxuICAgIC8vIERFQlVHOiBMb2cgYWxsIHJlY2VpdmVkIHBhcmFtc1xuICAgIGNvbnNvbGUubG9nKCdbT0F1dGhDYWxsYmFja10gVVJMIHBhcmFtcyByZWNlaXZlZDonLCB7XG4gICAgICB1cmw6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgICAgaGFzQWNjZXNzVG9rZW46IHBhcmFtcy5oYXMoJ2FjY2Vzc190b2tlbicpLFxuICAgICAgaGFzUmVmcmVzaFRva2VuOiBwYXJhbXMuaGFzKCdyZWZyZXNoX3Rva2VuJyksXG4gICAgICBoYXNGaXJlYmFzZVRva2VuOiBwYXJhbXMuaGFzKCdmaXJlYmFzZV90b2tlbicpLFxuICAgICAgZmlyZWJhc2VUb2tlbkxlbmd0aDogcGFyYW1zLmdldCgnZmlyZWJhc2VfdG9rZW4nKT8ubGVuZ3RoIHx8IDAsXG4gICAgICBlcnJvcjogcGFyYW1zLmdldCgnZXJyb3InKSxcbiAgICB9KTtcblxuICAgIC8vIFZlcmlmaWNhciBzaSBoYXkgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHBhcmFtcy5nZXQoJ2Vycm9yJyk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0aGlzLnNlbmRUb1BhcmVudCh7XG4gICAgICAgIHR5cGU6ICdvYXV0aC1jYWxsYmFjaycsXG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgY29kZTogZXJyb3IsXG4gICAgICAgICAgbWVzc2FnZTogcGFyYW1zLmdldCgnZXJyb3JfZGVzY3JpcHRpb24nKSB8fCAnRXJyb3IgZGUgYXV0ZW50aWNhY2nDs24nLFxuICAgICAgICB9IGFzIE9BdXRoRXJyb3IsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubWVzc2FnZSA9ICdFcnJvciBkZSBhdXRlbnRpY2FjacOzbic7XG4gICAgICB0aGlzLmNsb3NlQWZ0ZXJEZWxheSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgdG9rZW5zXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBwYXJhbXMuZ2V0KCdhY2Nlc3NfdG9rZW4nKTtcbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPSBwYXJhbXMuZ2V0KCdyZWZyZXNoX3Rva2VuJyk7XG4gICAgY29uc3QgZXhwaXJlc0luID0gcGFyYW1zLmdldCgnZXhwaXJlc19pbicpO1xuICAgIGNvbnN0IGZpcmViYXNlVG9rZW4gPSBwYXJhbXMuZ2V0KCdmaXJlYmFzZV90b2tlbicpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbiB8fCAhcmVmcmVzaFRva2VuKSB7XG4gICAgICB0aGlzLnNlbmRUb1BhcmVudCh7XG4gICAgICAgIHR5cGU6ICdvYXV0aC1jYWxsYmFjaycsXG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgY29kZTogJ01JU1NJTkdfVE9LRU5TJyxcbiAgICAgICAgICBtZXNzYWdlOiAnTm8gc2UgcmVjaWJpZXJvbiBsb3MgdG9rZW5zIGRlIGF1dGVudGljYWNpw7NuJyxcbiAgICAgICAgfSBhcyBPQXV0aEVycm9yLFxuICAgICAgfSk7XG4gICAgICB0aGlzLm1lc3NhZ2UgPSAnRXJyb3I6IHRva2VucyBubyByZWNpYmlkb3MnO1xuICAgICAgdGhpcy5jbG9zZUFmdGVyRGVsYXkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWVyIHJvbGVzIHkgcGVybWlzb3MgKHB1ZWRlbiB2ZW5pciBjb21vIEpTT04gZW4gYmFzZTY0KVxuICAgIGxldCByb2xlczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG4gICAgbGV0IHBlcm1pc3Npb25zOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IHJvbGVzUGFyYW0gPSBwYXJhbXMuZ2V0KCdyb2xlcycpO1xuICAgIGNvbnN0IHBlcm1pc3Npb25zUGFyYW0gPSBwYXJhbXMuZ2V0KCdwZXJtaXNzaW9ucycpO1xuXG4gICAgaWYgKHJvbGVzUGFyYW0pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJvbGVzID0gSlNPTi5wYXJzZShhdG9iKHJvbGVzUGFyYW0pKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByb2xlcyA9IHJvbGVzUGFyYW0uc3BsaXQoJywnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGVybWlzc2lvbnNQYXJhbSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGVybWlzc2lvbnMgPSBKU09OLnBhcnNlKGF0b2IocGVybWlzc2lvbnNQYXJhbSkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHBlcm1pc3Npb25zID0gcGVybWlzc2lvbnNQYXJhbS5zcGxpdCgnLCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVudmlhciB0b2tlbnMgYSBsYSB2ZW50YW5hIHBhZHJlXG4gICAgY29uc3QgcmVzdWx0OiBPQXV0aFJlc3VsdCA9IHtcbiAgICAgIGFjY2Vzc1Rva2VuLFxuICAgICAgcmVmcmVzaFRva2VuLFxuICAgICAgZXhwaXJlc0luOiBleHBpcmVzSW4gPyBwYXJzZUludChleHBpcmVzSW4sIDEwKSA6IDkwMCxcbiAgICAgIGZpcmViYXNlVG9rZW46IGZpcmViYXNlVG9rZW4gfHwgdW5kZWZpbmVkLFxuICAgICAgcm9sZXMsXG4gICAgICBwZXJtaXNzaW9ucyxcbiAgICAgIGlzTmV3VXNlcjogcGFyYW1zLmdldCgnaXNfbmV3X3VzZXInKSA9PT0gJ3RydWUnLFxuICAgICAgbGlua2VkOiBwYXJhbXMuZ2V0KCdsaW5rZWQnKSA9PT0gJ3RydWUnLFxuICAgIH07XG5cbiAgICB0aGlzLnNlbmRUb1BhcmVudCh7XG4gICAgICB0eXBlOiAnb2F1dGgtY2FsbGJhY2snLFxuICAgICAgdG9rZW5zOiByZXN1bHQsXG4gICAgfSk7XG5cbiAgICB0aGlzLm1lc3NhZ2UgPSAnQXV0ZW50aWNhY2nDs24gZXhpdG9zYSc7XG4gICAgdGhpcy5jbG9zZUFmdGVyRGVsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VuZFRvUGFyZW50KGRhdGE6IE9BdXRoQ2FsbGJhY2tEYXRhKTogdm9pZCB7XG4gICAgLy8gU2llbXByZSBndWFyZGFyIGVuIGxvY2FsU3RvcmFnZSBjb21vIGZhbGxiYWNrIChwYXJhIENPT1AgaXNzdWVzKVxuICAgIHRyeSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnb2F1dGhfY2FsbGJhY2tfZGF0YScsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdvYXV0aF9jYWxsYmFja190aW1lc3RhbXAnLCBEYXRlLm5vdygpLnRvU3RyaW5nKCkpO1xuICAgICAgY29uc29sZS5sb2coJ1tPQXV0aENhbGxiYWNrXSBTYXZlZCB0byBsb2NhbFN0b3JhZ2UgYXMgZmFsbGJhY2snKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tPQXV0aENhbGxiYWNrXSBDb3VsZCBub3Qgc2F2ZSB0byBsb2NhbFN0b3JhZ2U6JywgZSk7XG4gICAgfVxuXG4gICAgLy8gSW50ZW50YXIgcG9zdE1lc3NhZ2UgKHB1ZWRlIGZhbGxhciBwb3IgQ09PUClcbiAgICB0cnkge1xuICAgICAgaWYgKHdpbmRvdy5vcGVuZXIgJiYgIXdpbmRvdy5vcGVuZXIuY2xvc2VkKSB7XG4gICAgICAgIHdpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoZGF0YSwgd2luZG93LmxvY2F0aW9uLm9yaWdpbik7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbT0F1dGhDYWxsYmFja10gcG9zdE1lc3NhZ2Ugc2VudCB0byBvcGVuZXInKTtcbiAgICAgIH0gZWxzZSBpZiAod2luZG93LnBhcmVudCAhPT0gd2luZG93KSB7XG4gICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoZGF0YSwgd2luZG93LmxvY2F0aW9uLm9yaWdpbik7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbT0F1dGhDYWxsYmFja10gcG9zdE1lc3NhZ2Ugc2VudCB0byBwYXJlbnQnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdbT0F1dGhDYWxsYmFja10gTm8gb3BlbmVyL3BhcmVudCBhdmFpbGFibGUsIHVzaW5nIGxvY2FsU3RvcmFnZSBvbmx5Jyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gQ09PUCBibG9ja3MgcG9zdE1lc3NhZ2UgLSBsb2NhbFN0b3JhZ2UgZmFsbGJhY2sgYWxyZWFkeSBzYXZlZFxuICAgICAgY29uc29sZS53YXJuKCdbT0F1dGhDYWxsYmFja10gcG9zdE1lc3NhZ2UgYmxvY2tlZCAoQ09PUCksIHVzaW5nIGxvY2FsU3RvcmFnZSBmYWxsYmFjazonLCBlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlQWZ0ZXJEZWxheSgpOiB2b2lkIHtcbiAgICAvLyBEYXIgdGllbXBvIHBhcmEgcXVlIGVsIG1lbnNhamUgc2UgZW52w61lIGFudGVzIGRlIGNlcnJhclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHdpbmRvdy5vcGVuZXIpIHtcbiAgICAgICAgd2luZG93LmNsb3NlKCk7XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgfVxufVxuIl19
|