valtech-components 2.0.820 → 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,187 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AppVersionService
|
|
3
|
-
*
|
|
4
|
-
* Verificación de versión de la app para PWA / web.
|
|
5
|
-
*
|
|
6
|
-
* Unifica dos señales para detectar actualizaciones:
|
|
7
|
-
*
|
|
8
|
-
* 1. `SwUpdate` (`@angular/service-worker`) — el evento `VERSION_READY` indica
|
|
9
|
-
* que un bundle nuevo fue descargado y está listo para activarse. Solo está
|
|
10
|
-
* disponible cuando el service worker está registrado (build de producción).
|
|
11
|
-
* Además se chequea proactivamente cada `checkIntervalMs` y cada vez que la
|
|
12
|
-
* app vuelve a foreground (`visibilitychange`).
|
|
13
|
-
*
|
|
14
|
-
* 2. `AppConfigService` (config remoto en Firestore) — expone `version`
|
|
15
|
-
* (última versión publicada) y `minVersion` (versión mínima soportada).
|
|
16
|
-
* Se usa para la política de actualización obligatoria (hard gate).
|
|
17
|
-
*
|
|
18
|
-
* Ambas dependencias se inyectan como opcionales: el servicio degrada con
|
|
19
|
-
* gracia si el SW no está habilitado (dev mode) o si `AppConfigService` no
|
|
20
|
-
* está wireado en la app.
|
|
21
|
-
*/
|
|
22
|
-
import { DOCUMENT } from '@angular/common';
|
|
23
|
-
import { DestroyRef, Injectable, computed, inject, signal } from '@angular/core';
|
|
24
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
25
|
-
import { SwUpdate } from '@angular/service-worker';
|
|
26
|
-
import { filter, interval } from 'rxjs';
|
|
27
|
-
import { AppConfigService } from '../app-config/app-config.service';
|
|
28
|
-
import { VALTECH_APP_VERSION } from './config';
|
|
29
|
-
import { DEFAULT_APP_VERSION_SERVICE_CONFIG } from './types';
|
|
30
|
-
import * as i0 from "@angular/core";
|
|
31
|
-
/**
|
|
32
|
-
* Compara dos versiones semver. Retorna true si `a` es estrictamente menor
|
|
33
|
-
* que `b`. Tolerante a longitudes distintas y a partes no numéricas.
|
|
34
|
-
*/
|
|
35
|
-
function isVersionLower(a, b) {
|
|
36
|
-
const pa = a.split('.').map(n => Number(n) || 0);
|
|
37
|
-
const pb = b.split('.').map(n => Number(n) || 0);
|
|
38
|
-
const len = Math.max(pa.length, pb.length);
|
|
39
|
-
for (let i = 0; i < len; i++) {
|
|
40
|
-
const x = pa[i] || 0;
|
|
41
|
-
const y = pb[i] || 0;
|
|
42
|
-
if (x < y)
|
|
43
|
-
return true;
|
|
44
|
-
if (x > y)
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
export class AppVersionService {
|
|
50
|
-
constructor() {
|
|
51
|
-
/** SwUpdate solo existe si el SW está registrado (prod build). */
|
|
52
|
-
this.swUpdate = inject(SwUpdate, { optional: true });
|
|
53
|
-
/** AppConfigService es opcional: la app puede no wirearlo. */
|
|
54
|
-
this.appConfig = inject(AppConfigService, { optional: true });
|
|
55
|
-
this.serviceConfig = inject(VALTECH_APP_VERSION, {
|
|
56
|
-
optional: true,
|
|
57
|
-
});
|
|
58
|
-
this.document = inject(DOCUMENT);
|
|
59
|
-
this.destroyRef = inject(DestroyRef);
|
|
60
|
-
/** True cuando el SW reportó un bundle nuevo listo (`VERSION_READY`). */
|
|
61
|
-
this.swUpdateReady = signal(false);
|
|
62
|
-
/**
|
|
63
|
-
* True cuando el usuario descartó el banner de actualización opcional.
|
|
64
|
-
* El banner obligatorio (`update-required`) ignora este flag.
|
|
65
|
-
*/
|
|
66
|
-
this._dismissed = signal(false);
|
|
67
|
-
this.dismissed = this._dismissed.asReadonly();
|
|
68
|
-
// ===========================================================================
|
|
69
|
-
// SIGNALS PÚBLICOS
|
|
70
|
-
// ===========================================================================
|
|
71
|
-
/**
|
|
72
|
-
* Versión local del build actual de la app.
|
|
73
|
-
* Proviene del provider `provideValtechAppVersion({ currentVersion })`.
|
|
74
|
-
*/
|
|
75
|
-
this.currentVersion = computed(() => this.serviceConfig?.currentVersion ?? '0.0.0');
|
|
76
|
-
/**
|
|
77
|
-
* Última versión publicada según el config remoto.
|
|
78
|
-
* `null` si `AppConfigService` no está disponible o aún no cargó.
|
|
79
|
-
*/
|
|
80
|
-
this.latestVersion = computed(() => this.appConfig?.remoteVersion() ?? null);
|
|
81
|
-
/**
|
|
82
|
-
* Estado de la versión:
|
|
83
|
-
* - `update-required` — la versión local quedó por debajo de `minVersion`
|
|
84
|
-
* del config remoto. Hard gate. Solo si `AppConfigService` tiene datos.
|
|
85
|
-
* - `update-available` — el SW descargó un bundle nuevo (`VERSION_READY`)
|
|
86
|
-
* o `AppConfigService.hasUpdate` es true.
|
|
87
|
-
* - `up-to-date` — en cualquier otro caso.
|
|
88
|
-
*/
|
|
89
|
-
this.status = computed(() => {
|
|
90
|
-
// 1. Hard gate — minVersion del config remoto.
|
|
91
|
-
if (this.appConfig) {
|
|
92
|
-
const minVersion = this.appConfig.appConfig()?.minVersion;
|
|
93
|
-
if (minVersion && isVersionLower(this.currentVersion(), minVersion)) {
|
|
94
|
-
return 'update-required';
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
// 2. Update opcional — SW bundle listo o config remoto más nuevo.
|
|
98
|
-
if (this.swUpdateReady() || this.appConfig?.hasUpdate()) {
|
|
99
|
-
return 'update-available';
|
|
100
|
-
}
|
|
101
|
-
return 'up-to-date';
|
|
102
|
-
});
|
|
103
|
-
this.wireServiceWorker();
|
|
104
|
-
}
|
|
105
|
-
// ===========================================================================
|
|
106
|
-
// MÉTODOS PÚBLICOS
|
|
107
|
-
// ===========================================================================
|
|
108
|
-
/**
|
|
109
|
-
* Aplica la actualización pendiente.
|
|
110
|
-
*
|
|
111
|
-
* Si el SW está habilitado, activa la versión descargada y recarga; si no,
|
|
112
|
-
* solo recarga la página (la web obtiene el bundle nuevo del servidor).
|
|
113
|
-
*/
|
|
114
|
-
async applyUpdate() {
|
|
115
|
-
try {
|
|
116
|
-
if (this.swUpdate?.isEnabled) {
|
|
117
|
-
await this.swUpdate.activateUpdate();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
catch (err) {
|
|
121
|
-
console.warn('[AppVersionService] activateUpdate failed:', err);
|
|
122
|
-
}
|
|
123
|
-
finally {
|
|
124
|
-
this.document.defaultView?.location.reload();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Descarta el banner de actualización opcional.
|
|
129
|
-
* No tiene efecto sobre el estado `update-required` (hard gate).
|
|
130
|
-
*/
|
|
131
|
-
dismiss() {
|
|
132
|
-
this._dismissed.set(true);
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Fuerza un chequeo de actualización del service worker.
|
|
136
|
-
* No-op si el SW no está habilitado.
|
|
137
|
-
*/
|
|
138
|
-
async checkNow() {
|
|
139
|
-
if (!this.swUpdate?.isEnabled)
|
|
140
|
-
return;
|
|
141
|
-
try {
|
|
142
|
-
await this.swUpdate.checkForUpdate();
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
console.warn('[AppVersionService] checkForUpdate failed:', err);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
// ===========================================================================
|
|
149
|
-
// PRIVADO
|
|
150
|
-
// ===========================================================================
|
|
151
|
-
/**
|
|
152
|
-
* Suscribe `versionUpdates`, programa chequeos periódicos y reacciona al
|
|
153
|
-
* volver la app a foreground. Solo actúa si el SW está habilitado.
|
|
154
|
-
*/
|
|
155
|
-
wireServiceWorker() {
|
|
156
|
-
if (!this.swUpdate?.isEnabled)
|
|
157
|
-
return;
|
|
158
|
-
// Bundle nuevo descargado y listo.
|
|
159
|
-
this.swUpdate.versionUpdates
|
|
160
|
-
.pipe(filter(evt => evt.type === 'VERSION_READY'), takeUntilDestroyed(this.destroyRef))
|
|
161
|
-
.subscribe(() => this.swUpdateReady.set(true));
|
|
162
|
-
// Chequeo periódico.
|
|
163
|
-
const intervalMs = this.serviceConfig?.checkIntervalMs ?? DEFAULT_APP_VERSION_SERVICE_CONFIG.checkIntervalMs;
|
|
164
|
-
interval(intervalMs)
|
|
165
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
166
|
-
.subscribe(() => void this.checkNow());
|
|
167
|
-
// Chequeo al volver la app a foreground.
|
|
168
|
-
const onVisible = () => {
|
|
169
|
-
if (this.document.visibilityState === 'visible') {
|
|
170
|
-
void this.checkNow();
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
this.document.addEventListener('visibilitychange', onVisible);
|
|
174
|
-
this.destroyRef.onDestroy(() => {
|
|
175
|
-
this.document.removeEventListener('visibilitychange', onVisible);
|
|
176
|
-
});
|
|
177
|
-
// Chequeo inicial.
|
|
178
|
-
void this.checkNow();
|
|
179
|
-
}
|
|
180
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppVersionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
181
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppVersionService, providedIn: 'root' }); }
|
|
182
|
-
}
|
|
183
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AppVersionService, decorators: [{
|
|
184
|
-
type: Injectable,
|
|
185
|
-
args: [{ providedIn: 'root' }]
|
|
186
|
-
}], ctorParameters: () => [] });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXZlcnNpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvYXBwLXZlcnNpb24vYXBwLXZlcnNpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUMvQyxPQUFPLEVBQW9CLGtDQUFrQyxFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUUvRTs7O0dBR0c7QUFDSCxTQUFTLGNBQWMsQ0FBQyxDQUFTLEVBQUUsQ0FBUztJQUMxQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRCxN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LEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRWpELHFCQUFxQjtRQUNyQixNQUFNLFVBQVUsR0FDZCxJQUFJLENBQUMsYUFBYSxFQUFFLGVBQWUsSUFBSSxrQ0FBa0MsQ0FBQyxlQUFlLENBQUM7UUFFNUYsUUFBUSxDQUFDLFVBQVUsQ0FBQzthQUNqQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQ3pDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRXpDLHlDQUF5QztRQUN6QyxNQUFNLFNBQVMsR0FBRyxHQUFTLEVBQUU7WUFDM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDaEQsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7UUFFSCxtQkFBbUI7UUFDbkIsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkIsQ0FBQzsrR0F6SlUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FESixNQUFNOzs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBwVmVyc2lvblNlcnZpY2VcbiAqXG4gKiBWZXJpZmljYWNpw7NuIGRlIHZlcnNpw7NuIGRlIGxhIGFwcCBwYXJhIFBXQSAvIHdlYi5cbiAqXG4gKiBVbmlmaWNhIGRvcyBzZcOxYWxlcyBwYXJhIGRldGVjdGFyIGFjdHVhbGl6YWNpb25lczpcbiAqXG4gKiAxLiBgU3dVcGRhdGVgIChgQGFuZ3VsYXIvc2VydmljZS13b3JrZXJgKSDigJQgZWwgZXZlbnRvIGBWRVJTSU9OX1JFQURZYCBpbmRpY2FcbiAqICAgIHF1ZSB1biBidW5kbGUgbnVldm8gZnVlIGRlc2NhcmdhZG8geSBlc3TDoSBsaXN0byBwYXJhIGFjdGl2YXJzZS4gU29sbyBlc3TDoVxuICogICAgZGlzcG9uaWJsZSBjdWFuZG8gZWwgc2VydmljZSB3b3JrZXIgZXN0w6EgcmVnaXN0cmFkbyAoYnVpbGQgZGUgcHJvZHVjY2nDs24pLlxuICogICAgQWRlbcOhcyBzZSBjaGVxdWVhIHByb2FjdGl2YW1lbnRlIGNhZGEgYGNoZWNrSW50ZXJ2YWxNc2AgeSBjYWRhIHZleiBxdWUgbGFcbiAqICAgIGFwcCB2dWVsdmUgYSBmb3JlZ3JvdW5kIChgdmlzaWJpbGl0eWNoYW5nZWApLlxuICpcbiAqIDIuIGBBcHBDb25maWdTZXJ2aWNlYCAoY29uZmlnIHJlbW90byBlbiBGaXJlc3RvcmUpIOKAlCBleHBvbmUgYHZlcnNpb25gXG4gKiAgICAow7psdGltYSB2ZXJzacOzbiBwdWJsaWNhZGEpIHkgYG1pblZlcnNpb25gICh2ZXJzacOzbiBtw61uaW1hIHNvcG9ydGFkYSkuXG4gKiAgICBTZSB1c2EgcGFyYSBsYSBwb2zDrXRpY2EgZGUgYWN0dWFsaXphY2nDs24gb2JsaWdhdG9yaWEgKGhhcmQgZ2F0ZSkuXG4gKlxuICogQW1iYXMgZGVwZW5kZW5jaWFzIHNlIGlueWVjdGFuIGNvbW8gb3BjaW9uYWxlczogZWwgc2VydmljaW8gZGVncmFkYSBjb25cbiAqIGdyYWNpYSBzaSBlbCBTVyBubyBlc3TDoSBoYWJpbGl0YWRvIChkZXYgbW9kZSkgbyBzaSBgQXBwQ29uZmlnU2VydmljZWAgbm9cbiAqIGVzdMOhIHdpcmVhZG8gZW4gbGEgYXBwLlxuICovXG5cbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdGFibGUsIFNpZ25hbCwgY29tcHV0ZWQsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBTd1VwZGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL3NlcnZpY2Utd29ya2VyJztcbmltcG9ydCB7IGZpbHRlciwgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSB9IGZyb20gJy4uL2FwcC1jb25maWcvYXBwLWNvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IFZBTFRFQ0hfQVBQX1ZFUlNJT04gfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyBBcHBWZXJzaW9uU3RhdHVzLCBERUZBVUxUX0FQUF9WRVJTSU9OX1NFUlZJQ0VfQ09ORklHIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29tcGFyYSBkb3MgdmVyc2lvbmVzIHNlbXZlci4gUmV0b3JuYSB0cnVlIHNpIGBhYCBlcyBlc3RyaWN0YW1lbnRlIG1lbm9yXG4gKiBxdWUgYGJgLiBUb2xlcmFudGUgYSBsb25naXR1ZGVzIGRpc3RpbnRhcyB5IGEgcGFydGVzIG5vIG51bcOpcmljYXMuXG4gKi9cbmZ1bmN0aW9uIGlzVmVyc2lvbkxvd2VyKGE6IHN0cmluZywgYjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHBhID0gYS5zcGxpdCgnLicpLm1hcChuID0+IE51bWJlcihuKSB8fCAwKTtcbiAgY29uc3QgcGIgPSBiLnNwbGl0KCcuJykubWFwKG4gPT4gTnVtYmVyKG4pIHx8IDApO1xuICBjb25zdCBsZW4gPSBNYXRoLm1heChwYS5sZW5ndGgsIHBiLmxlbmd0aCk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IHggPSBwYVtpXSB8fCAwO1xuICAgIGNvbnN0IHkgPSBwYltpXSB8fCAwO1xuICAgIGlmICh4IDwgeSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKHggPiB5KSByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQXBwVmVyc2lvblNlcnZpY2Uge1xuICAvKiogU3dVcGRhdGUgc29sbyBleGlzdGUgc2kgZWwgU1cgZXN0w6EgcmVnaXN0cmFkbyAocHJvZCBidWlsZCkuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3dVcGRhdGUgPSBpbmplY3QoU3dVcGRhdGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIC8qKiBBcHBDb25maWdTZXJ2aWNlIGVzIG9wY2lvbmFsOiBsYSBhcHAgcHVlZGUgbm8gd2lyZWFybG8uICovXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnID0gaW5qZWN0KEFwcENvbmZpZ1NlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZUNvbmZpZyA9IGluamVjdChWQUxURUNIX0FQUF9WRVJTSU9OLCB7XG4gICAgb3B0aW9uYWw6IHRydWUsXG4gIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIC8qKiBUcnVlIGN1YW5kbyBlbCBTVyByZXBvcnTDsyB1biBidW5kbGUgbnVldm8gbGlzdG8gKGBWRVJTSU9OX1JFQURZYCkuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3dVcGRhdGVSZWFkeSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIFRydWUgY3VhbmRvIGVsIHVzdWFyaW8gZGVzY2FydMOzIGVsIGJhbm5lciBkZSBhY3R1YWxpemFjacOzbiBvcGNpb25hbC5cbiAgICogRWwgYmFubmVyIG9ibGlnYXRvcmlvIChgdXBkYXRlLXJlcXVpcmVkYCkgaWdub3JhIGVzdGUgZmxhZy5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc21pc3NlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGRpc21pc3NlZDogU2lnbmFsPGJvb2xlYW4+ID0gdGhpcy5fZGlzbWlzc2VkLmFzUmVhZG9ubHkoKTtcblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gU0lHTkFMUyBQw5pCTElDT1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFZlcnNpw7NuIGxvY2FsIGRlbCBidWlsZCBhY3R1YWwgZGUgbGEgYXBwLlxuICAgKiBQcm92aWVuZSBkZWwgcHJvdmlkZXIgYHByb3ZpZGVWYWx0ZWNoQXBwVmVyc2lvbih7IGN1cnJlbnRWZXJzaW9uIH0pYC5cbiAgICovXG4gIHJlYWRvbmx5IGN1cnJlbnRWZXJzaW9uOiBTaWduYWw8c3RyaW5nPiA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuc2VydmljZUNvbmZpZz8uY3VycmVudFZlcnNpb24gPz8gJzAuMC4wJ1xuICApO1xuXG4gIC8qKlxuICAgKiDDmmx0aW1hIHZlcnNpw7NuIHB1YmxpY2FkYSBzZWfDum4gZWwgY29uZmlnIHJlbW90by5cbiAgICogYG51bGxgIHNpIGBBcHBDb25maWdTZXJ2aWNlYCBubyBlc3TDoSBkaXNwb25pYmxlIG8gYcO6biBubyBjYXJnw7MuXG4gICAqL1xuICByZWFkb25seSBsYXRlc3RWZXJzaW9uOiBTaWduYWw8c3RyaW5nIHwgbnVsbD4gPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmFwcENvbmZpZz8ucmVtb3RlVmVyc2lvbigpID8/IG51bGxcbiAgKTtcblxuICAvKipcbiAgICogRXN0YWRvIGRlIGxhIHZlcnNpw7NuOlxuICAgKiAtIGB1cGRhdGUtcmVxdWlyZWRgIOKAlCBsYSB2ZXJzacOzbiBsb2NhbCBxdWVkw7MgcG9yIGRlYmFqbyBkZSBgbWluVmVyc2lvbmBcbiAgICogICBkZWwgY29uZmlnIHJlbW90by4gSGFyZCBnYXRlLiBTb2xvIHNpIGBBcHBDb25maWdTZXJ2aWNlYCB0aWVuZSBkYXRvcy5cbiAgICogLSBgdXBkYXRlLWF2YWlsYWJsZWAg4oCUIGVsIFNXIGRlc2NhcmfDsyB1biBidW5kbGUgbnVldm8gKGBWRVJTSU9OX1JFQURZYClcbiAgICogICBvIGBBcHBDb25maWdTZXJ2aWNlLmhhc1VwZGF0ZWAgZXMgdHJ1ZS5cbiAgICogLSBgdXAtdG8tZGF0ZWAg4oCUIGVuIGN1YWxxdWllciBvdHJvIGNhc28uXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM6IFNpZ25hbDxBcHBWZXJzaW9uU3RhdHVzPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAvLyAxLiBIYXJkIGdhdGUg4oCUIG1pblZlcnNpb24gZGVsIGNvbmZpZyByZW1vdG8uXG4gICAgaWYgKHRoaXMuYXBwQ29uZmlnKSB7XG4gICAgICBjb25zdCBtaW5WZXJzaW9uID0gdGhpcy5hcHBDb25maWcuYXBwQ29uZmlnKCk/Lm1pblZlcnNpb247XG4gICAgICBpZiAobWluVmVyc2lvbiAmJiBpc1ZlcnNpb25Mb3dlcih0aGlzLmN1cnJlbnRWZXJzaW9uKCksIG1pblZlcnNpb24pKSB7XG4gICAgICAgIHJldHVybiAndXBkYXRlLXJlcXVpcmVkJztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAyLiBVcGRhdGUgb3BjaW9uYWwg4oCUIFNXIGJ1bmRsZSBsaXN0byBvIGNvbmZpZyByZW1vdG8gbcOhcyBudWV2by5cbiAgICBpZiAodGhpcy5zd1VwZGF0ZVJlYWR5KCkgfHwgdGhpcy5hcHBDb25maWc/Lmhhc1VwZGF0ZSgpKSB7XG4gICAgICByZXR1cm4gJ3VwZGF0ZS1hdmFpbGFibGUnO1xuICAgIH1cblxuICAgIHJldHVybiAndXAtdG8tZGF0ZSc7XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMud2lyZVNlcnZpY2VXb3JrZXIoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw4lUT0RPUyBQw5pCTElDT1NcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFwbGljYSBsYSBhY3R1YWxpemFjacOzbiBwZW5kaWVudGUuXG4gICAqXG4gICAqIFNpIGVsIFNXIGVzdMOhIGhhYmlsaXRhZG8sIGFjdGl2YSBsYSB2ZXJzacOzbiBkZXNjYXJnYWRhIHkgcmVjYXJnYTsgc2kgbm8sXG4gICAqIHNvbG8gcmVjYXJnYSBsYSBww6FnaW5hIChsYSB3ZWIgb2J0aWVuZSBlbCBidW5kbGUgbnVldm8gZGVsIHNlcnZpZG9yKS5cbiAgICovXG4gIGFzeW5jIGFwcGx5VXBkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5zd1VwZGF0ZT8uaXNFbmFibGVkKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3dVcGRhdGUuYWN0aXZhdGVVcGRhdGUoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUud2FybignW0FwcFZlcnNpb25TZXJ2aWNlXSBhY3RpdmF0ZVVwZGF0ZSBmYWlsZWQ6JywgZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8ubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlc2NhcnRhIGVsIGJhbm5lciBkZSBhY3R1YWxpemFjacOzbiBvcGNpb25hbC5cbiAgICogTm8gdGllbmUgZWZlY3RvIHNvYnJlIGVsIGVzdGFkbyBgdXBkYXRlLXJlcXVpcmVkYCAoaGFyZCBnYXRlKS5cbiAgICovXG4gIGRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzbWlzc2VkLnNldCh0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdWVyemEgdW4gY2hlcXVlbyBkZSBhY3R1YWxpemFjacOzbiBkZWwgc2VydmljZSB3b3JrZXIuXG4gICAqIE5vLW9wIHNpIGVsIFNXIG5vIGVzdMOhIGhhYmlsaXRhZG8uXG4gICAqL1xuICBhc3luYyBjaGVja05vdygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuc3dVcGRhdGU/LmlzRW5hYmxlZCkgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnN3VXBkYXRlLmNoZWNrRm9yVXBkYXRlKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tBcHBWZXJzaW9uU2VydmljZV0gY2hlY2tGb3JVcGRhdGUgZmFpbGVkOicsIGVycik7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBRE9cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIFN1c2NyaWJlIGB2ZXJzaW9uVXBkYXRlc2AsIHByb2dyYW1hIGNoZXF1ZW9zIHBlcmnDs2RpY29zIHkgcmVhY2Npb25hIGFsXG4gICAqIHZvbHZlciBsYSBhcHAgYSBmb3JlZ3JvdW5kLiBTb2xvIGFjdMO6YSBzaSBlbCBTVyBlc3TDoSBoYWJpbGl0YWRvLlxuICAgKi9cbiAgcHJpdmF0ZSB3aXJlU2VydmljZVdvcmtlcigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc3dVcGRhdGU/LmlzRW5hYmxlZCkgcmV0dXJuO1xuXG4gICAgLy8gQnVuZGxlIG51ZXZvIGRlc2NhcmdhZG8geSBsaXN0by5cbiAgICB0aGlzLnN3VXBkYXRlLnZlcnNpb25VcGRhdGVzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGV2dCA9PiBldnQudHlwZSA9PT0gJ1ZFUlNJT05fUkVBRFknKSxcbiAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5zd1VwZGF0ZVJlYWR5LnNldCh0cnVlKSk7XG5cbiAgICAvLyBDaGVxdWVvIHBlcmnDs2RpY28uXG4gICAgY29uc3QgaW50ZXJ2YWxNcyA9XG4gICAgICB0aGlzLnNlcnZpY2VDb25maWc/LmNoZWNrSW50ZXJ2YWxNcyA/PyBERUZBVUxUX0FQUF9WRVJTSU9OX1NFUlZJQ0VfQ09ORklHLmNoZWNrSW50ZXJ2YWxNcztcblxuICAgIGludGVydmFsKGludGVydmFsTXMpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdm9pZCB0aGlzLmNoZWNrTm93KCkpO1xuXG4gICAgLy8gQ2hlcXVlbyBhbCB2b2x2ZXIgbGEgYXBwIGEgZm9yZWdyb3VuZC5cbiAgICBjb25zdCBvblZpc2libGUgPSAoKTogdm9pZCA9PiB7XG4gICAgICBpZiAodGhpcy5kb2N1bWVudC52aXNpYmlsaXR5U3RhdGUgPT09ICd2aXNpYmxlJykge1xuICAgICAgICB2b2lkIHRoaXMuY2hlY2tOb3coKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigndmlzaWJpbGl0eWNoYW5nZScsIG9uVmlzaWJsZSk7XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICB0aGlzLmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Zpc2liaWxpdHljaGFuZ2UnLCBvblZpc2libGUpO1xuICAgIH0pO1xuXG4gICAgLy8gQ2hlcXVlbyBpbmljaWFsLlxuICAgIHZvaWQgdGhpcy5jaGVja05vdygpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AppVersion Provider
|
|
3
|
-
*
|
|
4
|
-
* Provider e injection token para el servicio de verificación de versión.
|
|
5
|
-
*/
|
|
6
|
-
import { InjectionToken, makeEnvironmentProviders } from '@angular/core';
|
|
7
|
-
import { DEFAULT_APP_VERSION_SERVICE_CONFIG } from './types';
|
|
8
|
-
/**
|
|
9
|
-
* Token de inyección para la configuración de AppVersionService.
|
|
10
|
-
*/
|
|
11
|
-
export const VALTECH_APP_VERSION = new InjectionToken('ValtechAppVersion');
|
|
12
|
-
/**
|
|
13
|
-
* Provee el servicio de verificación de versión a la aplicación Angular.
|
|
14
|
-
*
|
|
15
|
-
* Detecta cuándo hay una versión nueva de la app combinando dos señales:
|
|
16
|
-
* - `SwUpdate` (PWA service worker) — bundle nuevo descargado y listo.
|
|
17
|
-
* - `AppConfigService` (config remoto en Firestore) — `version` / `minVersion`.
|
|
18
|
-
*
|
|
19
|
-
* @param config - Configuración del servicio. `currentVersion` es obligatorio.
|
|
20
|
-
* @returns EnvironmentProviders para usar en bootstrapApplication.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* // main.ts
|
|
25
|
-
* import { provideValtechAppVersion } from 'valtech-components';
|
|
26
|
-
* import pkg from '../package.json';
|
|
27
|
-
*
|
|
28
|
-
* bootstrapApplication(AppComponent, {
|
|
29
|
-
* providers: [
|
|
30
|
-
* provideValtechAppVersion({ currentVersion: pkg.version }),
|
|
31
|
-
* ],
|
|
32
|
-
* });
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
export function provideValtechAppVersion(config) {
|
|
36
|
-
const mergedConfig = {
|
|
37
|
-
...DEFAULT_APP_VERSION_SERVICE_CONFIG,
|
|
38
|
-
...config,
|
|
39
|
-
};
|
|
40
|
-
return makeEnvironmentProviders([{ provide: VALTECH_APP_VERSION, useValue: mergedConfig }]);
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hcHAtdmVyc2lvbi9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBd0IsY0FBYyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBMkIsa0NBQWtDLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFdEY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQsbUJBQW1CLENBQ3BCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxNQUErQjtJQUN0RSxNQUFNLFlBQVksR0FBc0M7UUFDdEQsR0FBRyxrQ0FBa0M7UUFDckMsR0FBRyxNQUFNO0tBQ1YsQ0FBQztJQUVGLE9BQU8sd0JBQXdCLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwcFZlcnNpb24gUHJvdmlkZXJcbiAqXG4gKiBQcm92aWRlciBlIGluamVjdGlvbiB0b2tlbiBwYXJhIGVsIHNlcnZpY2lvIGRlIHZlcmlmaWNhY2nDs24gZGUgdmVyc2nDs24uXG4gKi9cblxuaW1wb3J0IHsgRW52aXJvbm1lbnRQcm92aWRlcnMsIEluamVjdGlvblRva2VuLCBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwVmVyc2lvblNlcnZpY2VDb25maWcsIERFRkFVTFRfQVBQX1ZFUlNJT05fU0VSVklDRV9DT05GSUcgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBUb2tlbiBkZSBpbnllY2Npw7NuIHBhcmEgbGEgY29uZmlndXJhY2nDs24gZGUgQXBwVmVyc2lvblNlcnZpY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBWQUxURUNIX0FQUF9WRVJTSU9OID0gbmV3IEluamVjdGlvblRva2VuPFJlcXVpcmVkPEFwcFZlcnNpb25TZXJ2aWNlQ29uZmlnPj4oXG4gICdWYWx0ZWNoQXBwVmVyc2lvbidcbik7XG5cbi8qKlxuICogUHJvdmVlIGVsIHNlcnZpY2lvIGRlIHZlcmlmaWNhY2nDs24gZGUgdmVyc2nDs24gYSBsYSBhcGxpY2FjacOzbiBBbmd1bGFyLlxuICpcbiAqIERldGVjdGEgY3XDoW5kbyBoYXkgdW5hIHZlcnNpw7NuIG51ZXZhIGRlIGxhIGFwcCBjb21iaW5hbmRvIGRvcyBzZcOxYWxlczpcbiAqIC0gYFN3VXBkYXRlYCAoUFdBIHNlcnZpY2Ugd29ya2VyKSDigJQgYnVuZGxlIG51ZXZvIGRlc2NhcmdhZG8geSBsaXN0by5cbiAqIC0gYEFwcENvbmZpZ1NlcnZpY2VgIChjb25maWcgcmVtb3RvIGVuIEZpcmVzdG9yZSkg4oCUIGB2ZXJzaW9uYCAvIGBtaW5WZXJzaW9uYC5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhY2nDs24gZGVsIHNlcnZpY2lvLiBgY3VycmVudFZlcnNpb25gIGVzIG9ibGlnYXRvcmlvLlxuICogQHJldHVybnMgRW52aXJvbm1lbnRQcm92aWRlcnMgcGFyYSB1c2FyIGVuIGJvb3RzdHJhcEFwcGxpY2F0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBtYWluLnRzXG4gKiBpbXBvcnQgeyBwcm92aWRlVmFsdGVjaEFwcFZlcnNpb24gfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICogaW1wb3J0IHBrZyBmcm9tICcuLi9wYWNrYWdlLmpzb24nO1xuICpcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlVmFsdGVjaEFwcFZlcnNpb24oeyBjdXJyZW50VmVyc2lvbjogcGtnLnZlcnNpb24gfSksXG4gKiAgIF0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVZhbHRlY2hBcHBWZXJzaW9uKGNvbmZpZzogQXBwVmVyc2lvblNlcnZpY2VDb25maWcpOiBFbnZpcm9ubWVudFByb3ZpZGVycyB7XG4gIGNvbnN0IG1lcmdlZENvbmZpZzogUmVxdWlyZWQ8QXBwVmVyc2lvblNlcnZpY2VDb25maWc+ID0ge1xuICAgIC4uLkRFRkFVTFRfQVBQX1ZFUlNJT05fU0VSVklDRV9DT05GSUcsXG4gICAgLi4uY29uZmlnLFxuICB9O1xuXG4gIHJldHVybiBtYWtlRW52aXJvbm1lbnRQcm92aWRlcnMoW3sgcHJvdmlkZTogVkFMVEVDSF9BUFBfVkVSU0lPTiwgdXNlVmFsdWU6IG1lcmdlZENvbmZpZyB9XSk7XG59XG4iXX0=
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AppVersion Service Module
|
|
3
|
-
*
|
|
4
|
-
* Verificación de versión de la app para PWA / web. Detecta cuándo hay una
|
|
5
|
-
* versión nueva combinando el service worker (`SwUpdate`) y el config remoto
|
|
6
|
-
* (`AppConfigService`), con soporte para actualización obligatoria (hard gate).
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* // main.ts
|
|
11
|
-
* import { provideValtechAppVersion } from 'valtech-components';
|
|
12
|
-
* import pkg from '../package.json';
|
|
13
|
-
*
|
|
14
|
-
* bootstrapApplication(AppComponent, {
|
|
15
|
-
* providers: [
|
|
16
|
-
* provideValtechAppVersion({ currentVersion: pkg.version }),
|
|
17
|
-
* ],
|
|
18
|
-
* });
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export * from './types';
|
|
22
|
-
export { VALTECH_APP_VERSION, provideValtechAppVersion } from './config';
|
|
23
|
-
export { AppVersionService } from './app-version.service';
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2FwcC12ZXJzaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBRUgsY0FBYyxTQUFTLENBQUM7QUFDeEIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcHBWZXJzaW9uIFNlcnZpY2UgTW9kdWxlXG4gKlxuICogVmVyaWZpY2FjacOzbiBkZSB2ZXJzacOzbiBkZSBsYSBhcHAgcGFyYSBQV0EgLyB3ZWIuIERldGVjdGEgY3XDoW5kbyBoYXkgdW5hXG4gKiB2ZXJzacOzbiBudWV2YSBjb21iaW5hbmRvIGVsIHNlcnZpY2Ugd29ya2VyIChgU3dVcGRhdGVgKSB5IGVsIGNvbmZpZyByZW1vdG9cbiAqIChgQXBwQ29uZmlnU2VydmljZWApLCBjb24gc29wb3J0ZSBwYXJhIGFjdHVhbGl6YWNpw7NuIG9ibGlnYXRvcmlhIChoYXJkIGdhdGUpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBtYWluLnRzXG4gKiBpbXBvcnQgeyBwcm92aWRlVmFsdGVjaEFwcFZlcnNpb24gfSBmcm9tICd2YWx0ZWNoLWNvbXBvbmVudHMnO1xuICogaW1wb3J0IHBrZyBmcm9tICcuLi9wYWNrYWdlLmpzb24nO1xuICpcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtcbiAqICAgICBwcm92aWRlVmFsdGVjaEFwcFZlcnNpb24oeyBjdXJyZW50VmVyc2lvbjogcGtnLnZlcnNpb24gfSksXG4gKiAgIF0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0IHsgVkFMVEVDSF9BUFBfVkVSU0lPTiwgcHJvdmlkZVZhbHRlY2hBcHBWZXJzaW9uIH0gZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0IHsgQXBwVmVyc2lvblNlcnZpY2UgfSBmcm9tICcuL2FwcC12ZXJzaW9uLnNlcnZpY2UnO1xuIl19
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AppVersion Types
|
|
3
|
-
*
|
|
4
|
-
* Tipos para el servicio de verificación de versión de la aplicación.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Intervalo por defecto de chequeo de actualizaciones: 30 minutos.
|
|
8
|
-
*/
|
|
9
|
-
export const DEFAULT_CHECK_INTERVAL_MS = 30 * 60 * 1000;
|
|
10
|
-
/**
|
|
11
|
-
* Configuración por defecto del servicio.
|
|
12
|
-
*/
|
|
13
|
-
export const DEFAULT_APP_VERSION_SERVICE_CONFIG = {
|
|
14
|
-
currentVersion: '0.0.0',
|
|
15
|
-
checkIntervalMs: DEFAULT_CHECK_INTERVAL_MS,
|
|
16
|
-
};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2FwcC12ZXJzaW9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUEwQkg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUV4RDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtDQUFrQyxHQUFzQztJQUNuRixjQUFjLEVBQUUsT0FBTztJQUN2QixlQUFlLEVBQUUseUJBQXlCO0NBQzNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFwcFZlcnNpb24gVHlwZXNcbiAqXG4gKiBUaXBvcyBwYXJhIGVsIHNlcnZpY2lvIGRlIHZlcmlmaWNhY2nDs24gZGUgdmVyc2nDs24gZGUgbGEgYXBsaWNhY2nDs24uXG4gKi9cblxuLyoqXG4gKiBFc3RhZG8gZGUgbGEgdmVyc2nDs24gZGUgbGEgYXBsaWNhY2nDs24gcmVzcGVjdG8gYSBsYSB2ZXJzacOzbiBwdWJsaWNhZGEuXG4gKlxuICogLSBgdXAtdG8tZGF0ZWAgICDigJQgbGEgYXBwIGVzdMOhIGFsIGTDrWEsIG5vIGhheSBuYWRhIHF1ZSBoYWNlci5cbiAqIC0gYHVwZGF0ZS1hdmFpbGFibGVgIOKAlCBoYXkgdW5hIHZlcnNpw7NuIG51ZXZhIChidW5kbGUgZGVsIFNXIGxpc3RvIG8gY29uZmlnXG4gKiAgIHJlbW90byBtw6FzIG51ZXZvKS4gRWwgdXN1YXJpbyBwdWVkZSBhY3R1YWxpemFyIHBlcm8gTk8gZXN0w6Egb2JsaWdhZG8uXG4gKiAtIGB1cGRhdGUtcmVxdWlyZWRgIOKAlCBsYSB2ZXJzacOzbiBsb2NhbCBxdWVkw7MgcG9yIGRlYmFqbyBkZSBgbWluVmVyc2lvbmBcbiAqICAgZGVsIGNvbmZpZyByZW1vdG8gKGhhcmQgZ2F0ZSkuIEVsIHVzdWFyaW8gREVCRSBhY3R1YWxpemFyIHBhcmEgY29udGludWFyLlxuICovXG5leHBvcnQgdHlwZSBBcHBWZXJzaW9uU3RhdHVzID0gJ3VwLXRvLWRhdGUnIHwgJ3VwZGF0ZS1hdmFpbGFibGUnIHwgJ3VwZGF0ZS1yZXF1aXJlZCc7XG5cbi8qKlxuICogQ29uZmlndXJhY2nDs24gcGFyYSBlbCBwcm92ZWVkb3IgZGUgQXBwVmVyc2lvblNlcnZpY2UuXG4gKlxuICogQHByb3BlcnR5IGN1cnJlbnRWZXJzaW9uIC0gVmVyc2nDs24gZGVsIGJ1aWxkIGFjdHVhbCBkZSBsYSBhcHAgKHNlbXZlciBzdHJpbmcpLlxuICogICBOb3JtYWxtZW50ZSBwcm92aWVuZSBkZWwgYHZlcnNpb25gIGRlIGBwYWNrYWdlLmpzb25gLlxuICogQHByb3BlcnR5IGNoZWNrSW50ZXJ2YWxNcyAtIEludGVydmFsbyAobXMpIGVudHJlIGxsYW1hZGFzIGFcbiAqICAgYFN3VXBkYXRlLmNoZWNrRm9yVXBkYXRlKClgLiBEZWZhdWx0OiAzMCBtaW51dG9zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFZlcnNpb25TZXJ2aWNlQ29uZmlnIHtcbiAgY3VycmVudFZlcnNpb246IHN0cmluZztcbiAgY2hlY2tJbnRlcnZhbE1zPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEludGVydmFsbyBwb3IgZGVmZWN0byBkZSBjaGVxdWVvIGRlIGFjdHVhbGl6YWNpb25lczogMzAgbWludXRvcy5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ0hFQ0tfSU5URVJWQUxfTVMgPSAzMCAqIDYwICogMTAwMDtcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBwb3IgZGVmZWN0byBkZWwgc2VydmljaW8uXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0FQUF9WRVJTSU9OX1NFUlZJQ0VfQ09ORklHOiBSZXF1aXJlZDxBcHBWZXJzaW9uU2VydmljZUNvbmZpZz4gPSB7XG4gIGN1cnJlbnRWZXJzaW9uOiAnMC4wLjAnLFxuICBjaGVja0ludGVydmFsTXM6IERFRkFVTFRfQ0hFQ0tfSU5URVJWQUxfTVMsXG59O1xuIl19
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { Injectable, signal, computed } from '@angular/core';
|
|
2
|
-
import { INITIAL_AUTH_STATE, INITIAL_MFA_STATE, } from './types';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
/**
|
|
5
|
-
* Servicio para manejo de estado de autenticación con Angular Signals.
|
|
6
|
-
* Proporciona estado reactivo inmutable.
|
|
7
|
-
*/
|
|
8
|
-
export class AuthStateService {
|
|
9
|
-
constructor() {
|
|
10
|
-
// Estado interno (mutable solo dentro del servicio)
|
|
11
|
-
this._state = signal(INITIAL_AUTH_STATE);
|
|
12
|
-
this._mfaPending = signal(INITIAL_MFA_STATE);
|
|
13
|
-
// =============================================
|
|
14
|
-
// Signals públicos (readonly)
|
|
15
|
-
// =============================================
|
|
16
|
-
/** Estado completo de autenticación */
|
|
17
|
-
this.state = this._state.asReadonly();
|
|
18
|
-
/** Estado de MFA pendiente */
|
|
19
|
-
this.mfaPending = this._mfaPending.asReadonly();
|
|
20
|
-
/** Usuario está autenticado */
|
|
21
|
-
this.isAuthenticated = computed(() => this._state().isAuthenticated);
|
|
22
|
-
/** Estado de carga */
|
|
23
|
-
this.isLoading = computed(() => this._state().isLoading);
|
|
24
|
-
/** Token de acceso */
|
|
25
|
-
this.accessToken = computed(() => this._state().accessToken);
|
|
26
|
-
/** Roles del usuario */
|
|
27
|
-
this.roles = computed(() => this._state().roles);
|
|
28
|
-
/** Permisos del usuario */
|
|
29
|
-
this.permissions = computed(() => this._state().permissions);
|
|
30
|
-
/** Usuario es super admin */
|
|
31
|
-
this.isSuperAdmin = computed(() => this._state().isSuperAdmin);
|
|
32
|
-
/** Usuario tiene suscripción premium activa (no ve ads) */
|
|
33
|
-
this.isPremium = computed(() => this._state().isPremium);
|
|
34
|
-
/** Error actual */
|
|
35
|
-
this.error = computed(() => this._state().error);
|
|
36
|
-
/** Información del usuario */
|
|
37
|
-
this.user = computed(() => {
|
|
38
|
-
const state = this._state();
|
|
39
|
-
if (!state.isAuthenticated || !state.userId) {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
return {
|
|
43
|
-
userId: state.userId,
|
|
44
|
-
email: state.email || '',
|
|
45
|
-
name: state.name ?? undefined,
|
|
46
|
-
handle: state.handle ?? undefined,
|
|
47
|
-
avatarUrl: state.avatarUrl ?? undefined,
|
|
48
|
-
phone: state.phone ?? undefined,
|
|
49
|
-
roles: state.roles,
|
|
50
|
-
permissions: state.permissions,
|
|
51
|
-
isSuperAdmin: state.isSuperAdmin,
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
// =============================================
|
|
56
|
-
// Métodos de actualización
|
|
57
|
-
// =============================================
|
|
58
|
-
/**
|
|
59
|
-
* Establece el estado de carga.
|
|
60
|
-
*/
|
|
61
|
-
setLoading(isLoading) {
|
|
62
|
-
this._state.update(s => ({ ...s, isLoading }));
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Establece el estado de autenticación exitosa.
|
|
66
|
-
*/
|
|
67
|
-
setAuthenticated(data) {
|
|
68
|
-
this._state.set({
|
|
69
|
-
isAuthenticated: true,
|
|
70
|
-
isLoading: false,
|
|
71
|
-
accessToken: data.accessToken,
|
|
72
|
-
refreshToken: data.refreshToken,
|
|
73
|
-
userId: data.userId || null,
|
|
74
|
-
email: data.email || null,
|
|
75
|
-
roles: data.roles,
|
|
76
|
-
permissions: data.permissions,
|
|
77
|
-
isSuperAdmin: data.isSuperAdmin,
|
|
78
|
-
isPremium: data.isPremium || false,
|
|
79
|
-
expiresAt: data.expiresAt,
|
|
80
|
-
error: null,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Actualiza solo el access token (después de refresh).
|
|
85
|
-
*/
|
|
86
|
-
updateAccessToken(accessToken, expiresIn) {
|
|
87
|
-
const expiresAt = Date.now() + expiresIn * 1000;
|
|
88
|
-
this._state.update(s => ({
|
|
89
|
-
...s,
|
|
90
|
-
accessToken,
|
|
91
|
-
expiresAt,
|
|
92
|
-
}));
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Actualiza el refresh token (token rotation).
|
|
96
|
-
*/
|
|
97
|
-
updateRefreshToken(refreshToken) {
|
|
98
|
-
this._state.update(s => ({
|
|
99
|
-
...s,
|
|
100
|
-
refreshToken,
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Actualiza los permisos.
|
|
105
|
-
*/
|
|
106
|
-
updatePermissions(roles, permissions, isSuperAdmin) {
|
|
107
|
-
this._state.update(s => ({
|
|
108
|
-
...s,
|
|
109
|
-
roles,
|
|
110
|
-
permissions,
|
|
111
|
-
isSuperAdmin,
|
|
112
|
-
}));
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Establece un error de autenticación.
|
|
116
|
-
*/
|
|
117
|
-
setError(error) {
|
|
118
|
-
this._state.update(s => ({
|
|
119
|
-
...s,
|
|
120
|
-
error,
|
|
121
|
-
isLoading: false,
|
|
122
|
-
}));
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Limpia el error.
|
|
126
|
-
*/
|
|
127
|
-
clearError() {
|
|
128
|
-
this._state.update(s => ({
|
|
129
|
-
...s,
|
|
130
|
-
error: null,
|
|
131
|
-
}));
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Establece estado de MFA pendiente.
|
|
135
|
-
*/
|
|
136
|
-
setMFAPending(mfaState) {
|
|
137
|
-
this._mfaPending.set(mfaState);
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Limpia el estado de MFA pendiente.
|
|
141
|
-
*/
|
|
142
|
-
clearMFAPending() {
|
|
143
|
-
this._mfaPending.set(INITIAL_MFA_STATE);
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Resetea todo el estado a valores iniciales.
|
|
147
|
-
*/
|
|
148
|
-
reset() {
|
|
149
|
-
this._state.set(INITIAL_AUTH_STATE);
|
|
150
|
-
this._mfaPending.set(INITIAL_MFA_STATE);
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Restaura estado desde datos almacenados.
|
|
154
|
-
*/
|
|
155
|
-
restoreFromStorage(stored) {
|
|
156
|
-
if (stored.accessToken) {
|
|
157
|
-
this._state.set({
|
|
158
|
-
isAuthenticated: true,
|
|
159
|
-
isLoading: false,
|
|
160
|
-
accessToken: stored.accessToken,
|
|
161
|
-
refreshToken: stored.refreshToken || null,
|
|
162
|
-
userId: null, // Se extraerá del token
|
|
163
|
-
email: null, // Se extraerá del token
|
|
164
|
-
roles: stored.roles || [],
|
|
165
|
-
permissions: stored.permissions || [],
|
|
166
|
-
isSuperAdmin: stored.isSuperAdmin || false,
|
|
167
|
-
isPremium: stored.isPremium || false,
|
|
168
|
-
expiresAt: stored.expiresAt || null,
|
|
169
|
-
error: null,
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Actualiza el userId y email (después de parsear el token).
|
|
175
|
-
*/
|
|
176
|
-
updateUserInfo(userId, email) {
|
|
177
|
-
this._state.update(s => ({
|
|
178
|
-
...s,
|
|
179
|
-
userId,
|
|
180
|
-
email,
|
|
181
|
-
}));
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Hidrata el state con campos del profile (nombre, handle, avatar, phone).
|
|
185
|
-
* Invocado tras `getProfile()` o `updateProfile()` para que consumers de
|
|
186
|
-
* `auth.user()` vean los campos enriched automáticamente.
|
|
187
|
-
*
|
|
188
|
-
* Cualquier campo `undefined` se ignora (no sobrescribe con null). Campos
|
|
189
|
-
* `null` explícitos se persisten (signal de "limpiado").
|
|
190
|
-
*/
|
|
191
|
-
updateProfileFields(fields) {
|
|
192
|
-
this._state.update(s => ({
|
|
193
|
-
...s,
|
|
194
|
-
...(fields.name !== undefined && { name: fields.name }),
|
|
195
|
-
...(fields.handle !== undefined && { handle: fields.handle }),
|
|
196
|
-
...(fields.avatarUrl !== undefined && { avatarUrl: fields.avatarUrl }),
|
|
197
|
-
...(fields.phone !== undefined && { phone: fields.phone }),
|
|
198
|
-
}));
|
|
199
|
-
}
|
|
200
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
201
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthStateService, providedIn: 'root' }); }
|
|
202
|
-
}
|
|
203
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AuthStateService, decorators: [{
|
|
204
|
-
type: Injectable,
|
|
205
|
-
args: [{ providedIn: 'root' }]
|
|
206
|
-
}] });
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL2F1dGgtc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUtMLGtCQUFrQixFQUNsQixpQkFBaUIsR0FFbEIsTUFBTSxTQUFTLENBQUM7O0FBRWpCOzs7R0FHRztBQUVILE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFRSxvREFBb0Q7UUFDNUMsV0FBTSxHQUFHLE1BQU0sQ0FBWSxrQkFBa0IsQ0FBQyxDQUFDO1FBQy9DLGdCQUFXLEdBQUcsTUFBTSxDQUFrQixpQkFBaUIsQ0FBQyxDQUFDO1FBRWpFLGdEQUFnRDtRQUNoRCw4QkFBOEI7UUFDOUIsZ0RBQWdEO1FBRWhELHVDQUF1QztRQUM5QixVQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUUxQyw4QkFBOEI7UUFDckIsZUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFcEQsK0JBQStCO1FBQ3RCLG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV6RSxzQkFBc0I7UUFDYixjQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3RCxzQkFBc0I7UUFDYixnQkFBVyxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFakUsd0JBQXdCO1FBQ2YsVUFBSyxHQUFHLFFBQVEs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Q04sQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxtQkFBbUIsQ0FBQyxNQUtuQjtRQUNDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN2QixHQUFHLENBQUM7WUFDSixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZELEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0RSxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzNELENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzsrR0F0T1UsZ0JBQWdCO21IQUFoQixnQkFBZ0IsY0FESCxNQUFNOzs0RkFDbkIsZ0JBQWdCO2tCQUQ1QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEF1dGhTdGF0ZSxcbiAgQXV0aFVzZXIsXG4gIEF1dGhFcnJvcixcbiAgTUZBUGVuZGluZ1N0YXRlLFxuICBJTklUSUFMX0FVVEhfU1RBVEUsXG4gIElOSVRJQUxfTUZBX1NUQVRFLFxuICBTdG9yZWRBdXRoU3RhdGUsXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNlcnZpY2lvIHBhcmEgbWFuZWpvIGRlIGVzdGFkbyBkZSBhdXRlbnRpY2FjacOzbiBjb24gQW5ndWxhciBTaWduYWxzLlxuICogUHJvcG9yY2lvbmEgZXN0YWRvIHJlYWN0aXZvIGlubXV0YWJsZS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBdXRoU3RhdGVTZXJ2aWNlIHtcbiAgLy8gRXN0YWRvIGludGVybm8gKG11dGFibGUgc29sbyBkZW50cm8gZGVsIHNlcnZpY2lvKVxuICBwcml2YXRlIF9zdGF0ZSA9IHNpZ25hbDxBdXRoU3RhdGU+KElOSVRJQUxfQVVUSF9TVEFURSk7XG4gIHByaXZhdGUgX21mYVBlbmRpbmcgPSBzaWduYWw8TUZBUGVuZGluZ1N0YXRlPihJTklUSUFMX01GQV9TVEFURSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFNpZ25hbHMgcMO6YmxpY29zIChyZWFkb25seSlcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqIEVzdGFkbyBjb21wbGV0byBkZSBhdXRlbnRpY2FjacOzbiAqL1xuICByZWFkb25seSBzdGF0ZSA9IHRoaXMuX3N0YXRlLmFzUmVhZG9ubHkoKTtcblxuICAvKiogRXN0YWRvIGRlIE1GQSBwZW5kaWVudGUgKi9cbiAgcmVhZG9ubHkgbWZhUGVuZGluZyA9IHRoaXMuX21mYVBlbmRpbmcuYXNSZWFkb25seSgpO1xuXG4gIC8qKiBVc3VhcmlvIGVzdMOhIGF1dGVudGljYWRvICovXG4gIHJlYWRvbmx5IGlzQXV0aGVudGljYXRlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0YXRlKCkuaXNBdXRoZW50aWNhdGVkKTtcblxuICAvKiogRXN0YWRvIGRlIGNhcmdhICovXG4gIHJlYWRvbmx5IGlzTG9hZGluZyA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0YXRlKCkuaXNMb2FkaW5nKTtcblxuICAvKiogVG9rZW4gZGUgYWNjZXNvICovXG4gIHJlYWRvbmx5IGFjY2Vzc1Rva2VuID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RhdGUoKS5hY2Nlc3NUb2tlbik7XG5cbiAgLyoqIFJvbGVzIGRlbCB1c3VhcmlvICovXG4gIHJlYWRvbmx5IHJvbGVzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RhdGUoKS5yb2xlcyk7XG5cbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvICovXG4gIHJlYWRvbmx5IHBlcm1pc3Npb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RhdGUoKS5wZXJtaXNzaW9ucyk7XG5cbiAgLyoqIFVzdWFyaW8gZXMgc3VwZXIgYWRtaW4gKi9cbiAgcmVhZG9ubHkgaXNTdXBlckFkbWluID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fc3RhdGUoKS5pc1N1cGVyQWRtaW4pO1xuXG4gIC8qKiBVc3VhcmlvIHRpZW5lIHN1c2NyaXBjacOzbiBwcmVtaXVtIGFjdGl2YSAobm8gdmUgYWRzKSAqL1xuICByZWFkb25seSBpc1ByZW1pdW0gPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9zdGF0ZSgpLmlzUHJlbWl1bSk7XG5cbiAgLyoqIEVycm9yIGFjdHVhbCAqL1xuICByZWFkb25seSBlcnJvciA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX3N0YXRlKCkuZXJyb3IpO1xuXG4gIC8qKiBJbmZvcm1hY2nDs24gZGVsIHVzdWFyaW8gKi9cbiAgcmVhZG9ubHkgdXNlciA9IGNvbXB1dGVkPEF1dGhVc2VyIHwgbnVsbD4oKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fc3RhdGUoKTtcbiAgICBpZiAoIXN0YXRlLmlzQXV0aGVudGljYXRlZCB8fCAhc3RhdGUudXNlcklkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHVzZXJJZDogc3RhdGUudXNlcklkLFxuICAgICAgZW1haWw6IHN0YXRlLmVtYWlsIHx8ICcnLFxuICAgICAgbmFtZTogc3RhdGUubmFtZSA/PyB1bmRlZmluZWQsXG4gICAgICBoYW5kbGU6IHN0YXRlLmhhbmRsZSA/PyB1bmRlZmluZWQsXG4gICAgICBhdmF0YXJVcmw6IHN0YXRlLmF2YXRhclVybCA/PyB1bmRlZmluZWQsXG4gICAgICBwaG9uZTogc3RhdGUucGhvbmUgPz8gdW5kZWZpbmVkLFxuICAgICAgcm9sZXM6IHN0YXRlLnJvbGVzLFxuICAgICAgcGVybWlzc2lvbnM6IHN0YXRlLnBlcm1pc3Npb25zLFxuICAgICAgaXNTdXBlckFkbWluOiBzdGF0ZS5pc1N1cGVyQWRtaW4sXG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE3DqXRvZG9zIGRlIGFjdHVhbGl6YWNpw7NuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBFc3RhYmxlY2UgZWwgZXN0YWRvIGRlIGNhcmdhLlxuICAgKi9cbiAgc2V0TG9hZGluZyhpc0xvYWRpbmc6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZS51cGRhdGUocyA9PiAoeyAuLi5zLCBpc0xvYWRpbmcgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzdGFibGVjZSBlbCBlc3RhZG8gZGUgYXV0ZW50aWNhY2nDs24gZXhpdG9zYS5cbiAgICovXG4gIHNldEF1dGhlbnRpY2F0ZWQoZGF0YToge1xuICAgIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gICAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gICAgdXNlcklkPzogc3RyaW5nO1xuICAgIGVtYWlsPzogc3RyaW5nO1xuICAgIHJvbGVzOiBzdHJpbmdbXTtcbiAgICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gICAgaXNTdXBlckFkbWluOiBib29sZWFuO1xuICAgIGlzUHJlbWl1bT86IGJvb2xlYW47XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH0pOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZS5zZXQoe1xuICAgICAgaXNBdXRoZW50aWNhdGVkOiB0cnVlLFxuICAgICAgaXNMb2FkaW5nOiBmYWxzZSxcbiAgICAgIGFjY2Vzc1Rva2VuOiBkYXRhLmFjY2Vzc1Rva2VuLFxuICAgICAgcmVmcmVzaFRva2VuOiBkYXRhLnJlZnJlc2hUb2tlbixcbiAgICAgIHVzZXJJZDogZGF0YS51c2VySWQgfHwgbnVsbCxcbiAgICAgIGVtYWlsOiBkYXRhLmVtYWlsIHx8IG51bGwsXG4gICAgICByb2xlczogZGF0YS5yb2xlcyxcbiAgICAgIHBlcm1pc3Npb25zOiBkYXRhLnBlcm1pc3Npb25zLFxuICAgICAgaXNTdXBlckFkbWluOiBkYXRhLmlzU3VwZXJBZG1pbixcbiAgICAgIGlzUHJlbWl1bTogZGF0YS5pc1ByZW1pdW0gfHwgZmFsc2UsXG4gICAgICBleHBpcmVzQXQ6IGRhdGEuZXhwaXJlc0F0LFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsaXphIHNvbG8gZWwgYWNjZXNzIHRva2VuIChkZXNwdcOpcyBkZSByZWZyZXNoKS5cbiAgICovXG4gIHVwZGF0ZUFjY2Vzc1Rva2VuKGFjY2Vzc1Rva2VuOiBzdHJpbmcsIGV4cGlyZXNJbjogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgZXhwaXJlc0F0ID0gRGF0ZS5ub3coKSArIGV4cGlyZXNJbiAqIDEwMDA7XG4gICAgdGhpcy5fc3RhdGUudXBkYXRlKHMgPT4gKHtcbiAgICAgIC4uLnMsXG4gICAgICBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGlyZXNBdCxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQWN0dWFsaXphIGVsIHJlZnJlc2ggdG9rZW4gKHRva2VuIHJvdGF0aW9uKS5cbiAgICovXG4gIHVwZGF0ZVJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW46IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAuLi5zLFxuICAgICAgcmVmcmVzaFRva2VuLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgbG9zIHBlcm1pc29zLlxuICAgKi9cbiAgdXBkYXRlUGVybWlzc2lvbnMocm9sZXM6IHN0cmluZ1tdLCBwZXJtaXNzaW9uczogc3RyaW5nW10sIGlzU3VwZXJBZG1pbjogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAuLi5zLFxuICAgICAgcm9sZXMsXG4gICAgICBwZXJtaXNzaW9ucyxcbiAgICAgIGlzU3VwZXJBZG1pbixcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogRXN0YWJsZWNlIHVuIGVycm9yIGRlIGF1dGVudGljYWNpw7NuLlxuICAgKi9cbiAgc2V0RXJyb3IoZXJyb3I6IEF1dGhFcnJvcik6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAuLi5zLFxuICAgICAgZXJyb3IsXG4gICAgICBpc0xvYWRpbmc6IGZhbHNlLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1waWEgZWwgZXJyb3IuXG4gICAqL1xuICBjbGVhckVycm9yKCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAuLi5zLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzdGFibGVjZSBlc3RhZG8gZGUgTUZBIHBlbmRpZW50ZS5cbiAgICovXG4gIHNldE1GQVBlbmRpbmcobWZhU3RhdGU6IE1GQVBlbmRpbmdTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMuX21mYVBlbmRpbmcuc2V0KG1mYVN0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW1waWEgZWwgZXN0YWRvIGRlIE1GQSBwZW5kaWVudGUuXG4gICAqL1xuICBjbGVhck1GQVBlbmRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5fbWZhUGVuZGluZy5zZXQoSU5JVElBTF9NRkFfU1RBVEUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0ZWEgdG9kbyBlbCBlc3RhZG8gYSB2YWxvcmVzIGluaWNpYWxlcy5cbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlLnNldChJTklUSUFMX0FVVEhfU1RBVEUpO1xuICAgIHRoaXMuX21mYVBlbmRpbmcuc2V0KElOSVRJQUxfTUZBX1NUQVRFKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN0YXVyYSBlc3RhZG8gZGVzZGUgZGF0b3MgYWxtYWNlbmFkb3MuXG4gICAqL1xuICByZXN0b3JlRnJvbVN0b3JhZ2Uoc3RvcmVkOiBQYXJ0aWFsPFN0b3JlZEF1dGhTdGF0ZT4pOiB2b2lkIHtcbiAgICBpZiAoc3RvcmVkLmFjY2Vzc1Rva2VuKSB7XG4gICAgICB0aGlzLl9zdGF0ZS5zZXQoe1xuICAgICAgICBpc0F1dGhlbnRpY2F0ZWQ6IHRydWUsXG4gICAgICAgIGlzTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGFjY2Vzc1Rva2VuOiBzdG9yZWQuYWNjZXNzVG9rZW4sXG4gICAgICAgIHJlZnJlc2hUb2tlbjogc3RvcmVkLnJlZnJlc2hUb2tlbiB8fCBudWxsLFxuICAgICAgICB1c2VySWQ6IG51bGwsIC8vIFNlIGV4dHJhZXLDoSBkZWwgdG9rZW5cbiAgICAgICAgZW1haWw6IG51bGwsIC8vIFNlIGV4dHJhZXLDoSBkZWwgdG9rZW5cbiAgICAgICAgcm9sZXM6IHN0b3JlZC5yb2xlcyB8fCBbXSxcbiAgICAgICAgcGVybWlzc2lvbnM6IHN0b3JlZC5wZXJtaXNzaW9ucyB8fCBbXSxcbiAgICAgICAgaXNTdXBlckFkbWluOiBzdG9yZWQuaXNTdXBlckFkbWluIHx8IGZhbHNlLFxuICAgICAgICBpc1ByZW1pdW06IHN0b3JlZC5pc1ByZW1pdW0gfHwgZmFsc2UsXG4gICAgICAgIGV4cGlyZXNBdDogc3RvcmVkLmV4cGlyZXNBdCB8fCBudWxsLFxuICAgICAgICBlcnJvcjogbnVsbCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBY3R1YWxpemEgZWwgdXNlcklkIHkgZW1haWwgKGRlc3B1w6lzIGRlIHBhcnNlYXIgZWwgdG9rZW4pLlxuICAgKi9cbiAgdXBkYXRlVXNlckluZm8odXNlcklkOiBzdHJpbmcsIGVtYWlsOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZS51cGRhdGUocyA9PiAoe1xuICAgICAgLi4ucyxcbiAgICAgIHVzZXJJZCxcbiAgICAgIGVtYWlsLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRyYXRhIGVsIHN0YXRlIGNvbiBjYW1wb3MgZGVsIHByb2ZpbGUgKG5vbWJyZSwgaGFuZGxlLCBhdmF0YXIsIHBob25lKS5cbiAgICogSW52b2NhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCBvIGB1cGRhdGVQcm9maWxlKClgIHBhcmEgcXVlIGNvbnN1bWVycyBkZVxuICAgKiBgYXV0aC51c2VyKClgIHZlYW4gbG9zIGNhbXBvcyBlbnJpY2hlZCBhdXRvbcOhdGljYW1lbnRlLlxuICAgKlxuICAgKiBDdWFscXVpZXIgY2FtcG8gYHVuZGVmaW5lZGAgc2UgaWdub3JhIChubyBzb2JyZXNjcmliZSBjb24gbnVsbCkuIENhbXBvc1xuICAgKiBgbnVsbGAgZXhwbMOtY2l0b3Mgc2UgcGVyc2lzdGVuIChzaWduYWwgZGUgXCJsaW1waWFkb1wiKS5cbiAgICovXG4gIHVwZGF0ZVByb2ZpbGVGaWVsZHMoZmllbGRzOiB7XG4gICAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gICAgaGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgICBhdmF0YXJVcmw/OiBzdHJpbmcgfCBudWxsO1xuICAgIHBob25lPzogc3RyaW5nIHwgbnVsbDtcbiAgfSk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlLnVwZGF0ZShzID0+ICh7XG4gICAgICAuLi5zLFxuICAgICAgLi4uKGZpZWxkcy5uYW1lICE9PSB1bmRlZmluZWQgJiYgeyBuYW1lOiBmaWVsZHMubmFtZSB9KSxcbiAgICAgIC4uLihmaWVsZHMuaGFuZGxlICE9PSB1bmRlZmluZWQgJiYgeyBoYW5kbGU6IGZpZWxkcy5oYW5kbGUgfSksXG4gICAgICAuLi4oZmllbGRzLmF2YXRhclVybCAhPT0gdW5kZWZpbmVkICYmIHsgYXZhdGFyVXJsOiBmaWVsZHMuYXZhdGFyVXJsIH0pLFxuICAgICAgLi4uKGZpZWxkcy5waG9uZSAhPT0gdW5kZWZpbmVkICYmIHsgcGhvbmU6IGZpZWxkcy5waG9uZSB9KSxcbiAgICB9KSk7XG4gIH1cbn1cbiJdfQ==
|