@wavemaker/app-ng-runtime 11.14.2-rc.6311 → 11.14.4-rc.647538
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/components/advanced/carousel/bundles/index.umd.js +1 -15
- package/components/advanced/carousel/carousel.directive.d.ts +0 -1
- package/components/advanced/carousel/esm2022/carousel.directive.mjs +2 -16
- package/components/advanced/carousel/fesm2022/index.mjs +1 -15
- package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/bundles/index.umd.js +3 -24
- package/components/advanced/login/esm2022/login.component.mjs +4 -25
- package/components/advanced/login/fesm2022/index.mjs +3 -24
- package/components/advanced/login/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/login.component.d.ts +2 -5
- package/components/base/bundles/index.umd.js +28 -323
- package/components/base/directives/show-in-device.directive.d.ts +1 -2
- package/components/base/esm2022/directives/show-in-device.directive.mjs +4 -22
- package/components/base/esm2022/pipes/custom-pipes.mjs +1 -1
- package/components/base/esm2022/utils/widget-utils.mjs +3 -3
- package/components/base/esm2022/widgets/common/base/base-container.component.mjs +1 -27
- package/components/base/esm2022/widgets/common/base/base-field-validations.mjs +1 -18
- package/components/base/esm2022/widgets/common/base/base.component.mjs +7 -68
- package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +1 -9
- package/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +11 -44
- package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +1 -20
- package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +1 -26
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +4 -44
- package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +1 -16
- package/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +1 -22
- package/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -7
- package/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +3 -5
- package/components/base/esm2022/widgets/framework/widget-registry.mjs +3 -6
- package/components/base/fesm2022/index.mjs +26 -319
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/widgets/common/base/base-container.component.d.ts +2 -3
- package/components/base/widgets/common/base/base-field-validations.d.ts +0 -1
- package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +2 -3
- package/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +2 -6
- package/components/base/widgets/common/base/partial-container.directive.d.ts +2 -3
- package/components/base/widgets/common/item-template/item-template.directive.d.ts +2 -3
- package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
- package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +2 -3
- package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +2 -3
- package/components/basic/anchor/bundles/index.umd.js +1 -13
- package/components/basic/anchor/esm2022/anchor.component.mjs +2 -14
- package/components/basic/anchor/fesm2022/index.mjs +1 -13
- package/components/basic/anchor/fesm2022/index.mjs.map +1 -1
- package/components/basic/html/bundles/index.umd.js +1 -13
- package/components/basic/html/esm2022/html.directive.mjs +2 -14
- package/components/basic/html/fesm2022/index.mjs +1 -13
- package/components/basic/html/fesm2022/index.mjs.map +1 -1
- package/components/basic/label/bundles/index.umd.js +1 -17
- package/components/basic/label/esm2022/label.directive.mjs +2 -18
- package/components/basic/label/fesm2022/index.mjs +1 -17
- package/components/basic/label/fesm2022/index.mjs.map +1 -1
- package/components/basic/label/label.directive.d.ts +2 -3
- package/components/basic/progress/progress-circle/bundles/index.umd.js +0 -10
- package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +1 -11
- package/components/basic/progress/progress-circle/fesm2022/index.mjs +0 -10
- package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -1
- package/components/basic/progress/progress-circle/progress-circle.component.d.ts +2 -3
- package/components/basic/search/bundles/index.umd.js +1 -27
- package/components/basic/search/esm2022/scrollable.directive.mjs +2 -11
- package/components/basic/search/esm2022/search.component.mjs +1 -18
- package/components/basic/search/fesm2022/index.mjs +1 -27
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/scrollable.directive.d.ts +2 -4
- package/components/basic/search/search.component.d.ts +2 -3
- package/components/basic/spinner/bundles/index.umd.js +1 -9
- package/components/basic/spinner/esm2022/spinner.component.mjs +2 -10
- package/components/basic/spinner/fesm2022/index.mjs +1 -9
- package/components/basic/spinner/fesm2022/index.mjs.map +1 -1
- package/components/basic/spinner/spinner.component.d.ts +2 -4
- package/components/chart/bundles/index.umd.js +3 -21
- package/components/chart/esm2022/chart.component.mjs +4 -22
- package/components/chart/fesm2022/index.mjs +3 -21
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +2 -3
- package/components/containers/accordion/accordion.directive.d.ts +2 -5
- package/components/containers/accordion/bundles/index.umd.js +2 -49
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +1 -10
- package/components/containers/accordion/esm2022/accordion.directive.mjs +3 -41
- package/components/containers/accordion/fesm2022/index.mjs +2 -49
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/bundles/index.umd.js +0 -13
- package/components/containers/panel/esm2022/panel.component.mjs +1 -14
- package/components/containers/panel/fesm2022/index.mjs +0 -13
- package/components/containers/panel/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/panel.component.d.ts +2 -3
- package/components/containers/tabs/bundles/index.umd.js +2 -54
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +1 -10
- package/components/containers/tabs/esm2022/tabs.component.mjs +3 -46
- package/components/containers/tabs/fesm2022/index.mjs +2 -54
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +2 -3
- package/components/containers/tabs/tabs.component.d.ts +2 -5
- package/components/containers/wizard/bundles/index.umd.js +3 -47
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +3 -16
- package/components/containers/wizard/esm2022/wizard.component.mjs +2 -33
- package/components/containers/wizard/fesm2022/index.mjs +3 -47
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard-step/wizard-step.component.d.ts +2 -3
- package/components/containers/wizard/wizard.component.d.ts +2 -4
- package/components/data/card/bundles/index.umd.js +1 -17
- package/components/data/card/card-content/card-content.component.d.ts +2 -3
- package/components/data/card/card.component.d.ts +2 -4
- package/components/data/card/esm2022/card-content/card-content.component.mjs +1 -6
- package/components/data/card/esm2022/card.component.mjs +2 -13
- package/components/data/card/fesm2022/index.mjs +1 -17
- package/components/data/card/fesm2022/index.mjs.map +1 -1
- package/components/data/form/bundles/index.umd.js +0 -92
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +1 -7
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +1 -28
- package/components/data/form/esm2022/form-widget.directive.mjs +1 -8
- package/components/data/form/esm2022/form.component.mjs +1 -27
- package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +1 -7
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +1 -12
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +1 -10
- package/components/data/form/fesm2022/index.mjs +0 -92
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/form-action/form-action.directive.d.ts +2 -3
- package/components/data/form/form-field/form-field.directive.d.ts +2 -3
- package/components/data/form/form-widget.directive.d.ts +2 -3
- package/components/data/form/live-actions/live-actions.directive.d.ts +1 -3
- package/components/data/form/live-filter/live-filter.directive.d.ts +1 -3
- package/components/data/form/live-form/live-form.directive.d.ts +1 -3
- package/components/data/list/bundles/index.umd.js +17 -180
- package/components/data/list/esm2022/list-item.directive.mjs +11 -95
- package/components/data/list/esm2022/list.component.mjs +8 -87
- package/components/data/list/fesm2022/index.mjs +17 -180
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/list/list-item.directive.d.ts +2 -7
- package/components/data/list/list.component.d.ts +0 -3
- package/components/data/live-table/bundles/index.umd.js +1 -13
- package/components/data/live-table/esm2022/live-table.component.mjs +2 -14
- package/components/data/live-table/fesm2022/index.mjs +1 -13
- package/components/data/live-table/fesm2022/index.mjs.map +1 -1
- package/components/data/live-table/live-table.component.d.ts +2 -4
- package/components/data/pagination/bundles/index.umd.js +4 -57
- package/components/data/pagination/esm2022/pagination.component.mjs +5 -58
- package/components/data/pagination/fesm2022/index.mjs +4 -57
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/pagination.component.d.ts +2 -4
- package/components/data/table/bundles/index.umd.js +12 -311
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +1 -8
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -107
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +1 -9
- package/components/data/table/esm2022/table-cud.directive.mjs +2 -8
- package/components/data/table/esm2022/table-filter.directive.mjs +2 -12
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +1 -8
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +1 -8
- package/components/data/table/esm2022/table.component.mjs +9 -159
- package/components/data/table/fesm2022/index.mjs +12 -311
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/table-action/table-action.directive.d.ts +2 -3
- package/components/data/table/table-column/table-column.directive.d.ts +2 -3
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +2 -3
- package/components/data/table/table-cud.directive.d.ts +1 -3
- package/components/data/table/table-filter.directive.d.ts +1 -3
- package/components/data/table/table-row/table-row.directive.d.ts +2 -3
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +2 -3
- package/components/data/table/table.component.d.ts +2 -2
- package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +2 -3
- package/components/dialogs/alert-dialog/bundles/index.umd.js +0 -5
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +1 -6
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +0 -5
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/confirm-dialog/bundles/index.umd.js +0 -5
- package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +2 -3
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +1 -6
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs +0 -5
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/default/bundles/index.umd.js +2 -15
- package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +2 -4
- package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +3 -16
- package/components/dialogs/default/fesm2022/index.mjs +2 -15
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/design-dialog/bundles/index.umd.js +0 -7
- package/components/dialogs/design-dialog/dialog.component.d.ts +2 -3
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +1 -8
- package/components/dialogs/design-dialog/fesm2022/index.mjs +0 -7
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +0 -5
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +1 -6
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +0 -5
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +2 -3
- package/components/dialogs/partial-dialog/bundles/index.umd.js +3 -23
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +4 -24
- package/components/dialogs/partial-dialog/fesm2022/index.mjs +3 -23
- package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +2 -4
- package/components/input/base-form/base-form.component.d.ts +2 -4
- package/components/input/base-form/bundles/index.umd.js +2 -16
- package/components/input/base-form/esm2022/base-form.component.mjs +3 -17
- package/components/input/base-form/fesm2022/index.mjs +2 -16
- package/components/input/base-form/fesm2022/index.mjs.map +1 -1
- package/components/input/base-form-custom/base-form-custom.component.d.ts +2 -3
- package/components/input/base-form-custom/bundles/index.umd.js +2 -13
- package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +3 -14
- package/components/input/base-form-custom/fesm2022/index.mjs +2 -13
- package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -1
- package/components/input/checkbox/bundles/index.umd.js +0 -7
- package/components/input/checkbox/checkbox.component.d.ts +2 -3
- package/components/input/checkbox/esm2022/checkbox.component.mjs +1 -8
- package/components/input/checkbox/fesm2022/index.mjs +0 -7
- package/components/input/checkbox/fesm2022/index.mjs.map +1 -1
- package/components/input/checkboxset/bundles/index.umd.js +2 -18
- package/components/input/checkboxset/checkboxset.component.d.ts +2 -4
- package/components/input/checkboxset/esm2022/checkboxset.component.mjs +3 -19
- package/components/input/checkboxset/fesm2022/index.mjs +2 -18
- package/components/input/checkboxset/fesm2022/index.mjs.map +1 -1
- package/components/input/chips/bundles/index.umd.js +5 -45
- package/components/input/chips/chips.component.d.ts +2 -3
- package/components/input/chips/esm2022/chips.component.mjs +6 -46
- package/components/input/chips/fesm2022/index.mjs +5 -45
- package/components/input/chips/fesm2022/index.mjs.map +1 -1
- package/components/input/color-picker/bundles/index.umd.js +0 -8
- package/components/input/color-picker/color-picker.component.d.ts +2 -3
- package/components/input/color-picker/esm2022/color-picker.component.mjs +1 -9
- package/components/input/color-picker/fesm2022/index.mjs +0 -8
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- package/components/input/composite/bundles/index.umd.js +1 -10
- package/components/input/composite/composite.directive.d.ts +2 -3
- package/components/input/composite/esm2022/composite.directive.mjs +2 -11
- package/components/input/composite/fesm2022/index.mjs +1 -10
- package/components/input/composite/fesm2022/index.mjs.map +1 -1
- package/components/input/currency/bundles/index.umd.js +0 -7
- package/components/input/currency/currency.component.d.ts +2 -3
- package/components/input/currency/esm2022/currency.component.mjs +1 -8
- package/components/input/currency/fesm2022/index.mjs +0 -7
- package/components/input/currency/fesm2022/index.mjs.map +1 -1
- package/components/input/dataset-aware-form/bundles/index.umd.js +2 -26
- package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +3 -27
- package/components/input/dataset-aware-form/fesm2022/index.mjs +2 -26
- package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/date/bundles/index.umd.js +0 -22
- package/components/input/epoch/date/date.component.d.ts +0 -1
- package/components/input/epoch/date/esm2022/date.component.mjs +1 -23
- package/components/input/epoch/date/fesm2022/index.mjs +0 -22
- package/components/input/epoch/date/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/bundles/index.umd.js +8 -25
- package/components/input/file-upload/esm2022/file-upload.component.mjs +9 -26
- package/components/input/file-upload/fesm2022/index.mjs +8 -25
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/file-upload.component.d.ts +0 -3
- package/components/input/number/bundles/index.umd.js +0 -8
- package/components/input/number/esm2022/number.component.mjs +1 -9
- package/components/input/number/fesm2022/index.mjs +0 -8
- package/components/input/number/fesm2022/index.mjs.map +1 -1
- package/components/input/number/number.component.d.ts +2 -3
- package/components/input/radioset/bundles/index.umd.js +2 -18
- package/components/input/radioset/esm2022/radioset.component.mjs +3 -19
- package/components/input/radioset/fesm2022/index.mjs +2 -18
- package/components/input/radioset/fesm2022/index.mjs.map +1 -1
- package/components/input/radioset/radioset.component.d.ts +2 -4
- package/components/input/rating/bundles/index.umd.js +0 -10
- package/components/input/rating/esm2022/rating.component.mjs +1 -11
- package/components/input/rating/fesm2022/index.mjs +0 -10
- package/components/input/rating/fesm2022/index.mjs.map +1 -1
- package/components/input/rating/rating.component.d.ts +2 -3
- package/components/input/select/bundles/index.umd.js +0 -6
- package/components/input/select/esm2022/select.component.mjs +1 -7
- package/components/input/select/fesm2022/index.mjs +0 -6
- package/components/input/select/fesm2022/index.mjs.map +1 -1
- package/components/input/select/select.component.d.ts +2 -3
- package/components/input/slider/bundles/index.umd.js +0 -10
- package/components/input/slider/esm2022/slider.component.mjs +1 -11
- package/components/input/slider/fesm2022/index.mjs +0 -10
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/slider.component.d.ts +2 -3
- package/components/input/switch/bundles/index.umd.js +2 -22
- package/components/input/switch/esm2022/switch.component.mjs +3 -23
- package/components/input/switch/fesm2022/index.mjs +2 -22
- package/components/input/switch/fesm2022/index.mjs.map +1 -1
- package/components/input/switch/switch.component.d.ts +2 -3
- package/components/input/text/bundles/index.umd.js +0 -36
- package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +1 -8
- package/components/input/text/esm2022/input-color/input-color.component.mjs +1 -8
- package/components/input/text/esm2022/input-email/input-email.component.mjs +1 -8
- package/components/input/text/esm2022/input-number/input-number.component.mjs +1 -8
- package/components/input/text/esm2022/input-text/input-text.component.mjs +1 -9
- package/components/input/text/fesm2022/index.mjs +0 -36
- package/components/input/text/fesm2022/index.mjs.map +1 -1
- package/components/input/text/input-calendar/input-calendar.component.d.ts +2 -3
- package/components/input/text/input-color/input-color.component.d.ts +2 -3
- package/components/input/text/input-email/input-email.component.d.ts +2 -3
- package/components/input/text/input-number/input-number.component.d.ts +2 -3
- package/components/input/text/input-text/input-text.component.d.ts +2 -3
- package/components/input/textarea/bundles/index.umd.js +0 -7
- package/components/input/textarea/esm2022/textarea.component.mjs +1 -8
- package/components/input/textarea/fesm2022/index.mjs +0 -7
- package/components/input/textarea/fesm2022/index.mjs.map +1 -1
- package/components/input/textarea/textarea.component.d.ts +2 -3
- package/components/navigation/menu/bundles/index.umd.js +6 -55
- package/components/navigation/menu/esm2022/menu-adapator.component.mjs +3 -17
- package/components/navigation/menu/esm2022/menu.component.mjs +3 -10
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +1 -6
- package/components/navigation/menu/esm2022/nav/nav.component.mjs +1 -11
- package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +3 -16
- package/components/navigation/menu/fesm2022/index.mjs +6 -55
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/menu/menu-adapator.component.d.ts +2 -4
- package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +2 -3
- package/components/navigation/menu/nav/nav.component.d.ts +2 -3
- package/components/navigation/menu/nav/navigation-control.directive.d.ts +2 -4
- package/components/navigation/navbar/bundles/index.umd.js +0 -5
- package/components/navigation/navbar/esm2022/navbar.component.mjs +1 -6
- package/components/navigation/navbar/fesm2022/index.mjs +0 -5
- package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- package/components/navigation/navbar/navbar.component.d.ts +2 -3
- package/components/navigation/popover/bundles/index.umd.js +13 -65
- package/components/navigation/popover/esm2022/popover.component.mjs +11 -63
- package/components/navigation/popover/fesm2022/index.mjs +10 -62
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +3 -11
- package/components/page/default/bundles/index.umd.js +2 -20
- package/components/page/default/esm2022/layout.directive.mjs +1 -9
- package/components/page/default/esm2022/page-content/page-content.component.mjs +3 -13
- package/components/page/default/fesm2022/index.mjs +2 -20
- package/components/page/default/fesm2022/index.mjs.map +1 -1
- package/components/page/default/layout.directive.d.ts +2 -3
- package/components/page/default/page-content/page-content.component.d.ts +2 -3
- package/components/page/left-panel/bundles/index.umd.js +0 -16
- package/components/page/left-panel/esm2022/left-panel.directive.mjs +1 -17
- package/components/page/left-panel/fesm2022/index.mjs +0 -16
- package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/left-panel/left-panel.directive.d.ts +2 -3
- package/components/page/top-nav/bundles/index.umd.js +1 -2
- package/components/page/top-nav/esm2022/top-nav.props.mjs +2 -3
- package/components/page/top-nav/fesm2022/index.mjs +1 -2
- package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- package/components/prefab/bundles/index.umd.js +0 -4
- package/components/prefab/esm2022/prefab.directive.mjs +1 -5
- package/components/prefab/fesm2022/index.mjs +0 -4
- package/components/prefab/fesm2022/index.mjs.map +1 -1
- package/core/bundles/index.umd.js +94 -391
- package/core/esm2022/public_api.mjs +3 -3
- package/core/esm2022/services/viewport.service.mjs +10 -24
- package/core/esm2022/types/types.mjs +1 -1
- package/core/esm2022/utils/dom.mjs +2 -18
- package/core/esm2022/utils/event-notifier.mjs +2 -5
- package/core/esm2022/utils/lru-cache.mjs +2 -16
- package/core/esm2022/utils/utils.mjs +2 -6
- package/core/esm2022/utils/watcher.mjs +81 -323
- package/core/fesm2022/index.mjs +96 -390
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +2 -2
- package/core/services/viewport.service.d.ts +2 -5
- package/core/types/types.d.ts +0 -1
- package/core/utils/lru-cache.d.ts +0 -6
- package/core/utils/utils.d.ts +0 -1
- package/core/utils/watcher.d.ts +5 -26
- package/http/bundles/index.umd.js +1 -31
- package/http/esm2022/http.service.mjs +2 -32
- package/http/fesm2022/index.mjs +1 -31
- package/http/fesm2022/index.mjs.map +1 -1
- package/http/http.service.d.ts +2 -6
- package/locales/moment-timezone/moment-timezone-with-data.js +7 -7
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/bundles/index.umd.js +0 -9
- package/oAuth/esm2022/oAuth.service.mjs +1 -10
- package/oAuth/fesm2022/index.mjs +0 -9
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/oAuth/oAuth.service.d.ts +1 -3
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +42 -376
- package/runtime/base/components/app-component/app.component.d.ts +0 -4
- package/runtime/base/components/prefab-preview.component.d.ts +2 -5
- package/runtime/base/directives/accessroles.directive.d.ts +3 -4
- package/runtime/base/directives/prefab.directive.d.ts +2 -3
- package/runtime/base/esm2022/components/app-component/app.component.mjs +9 -40
- package/runtime/base/esm2022/components/base-custom-widget.component.mjs +2 -33
- package/runtime/base/esm2022/components/base-layout.component.mjs +1 -7
- package/runtime/base/esm2022/components/base-page.component.mjs +3 -36
- package/runtime/base/esm2022/components/base-partial.component.mjs +3 -37
- package/runtime/base/esm2022/components/base-prefab.component.mjs +3 -32
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +3 -37
- package/runtime/base/esm2022/components/prefab-preview.component.mjs +4 -23
- package/runtime/base/esm2022/directives/accessroles.directive.mjs +2 -11
- package/runtime/base/esm2022/directives/prefab.directive.mjs +1 -9
- package/runtime/base/esm2022/services/app.manager.service.mjs +10 -37
- package/runtime/base/esm2022/services/app.service.mjs +2 -34
- package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +1 -4
- package/runtime/base/esm2022/services/http-interceptor.services.mjs +14 -13
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +4 -7
- package/runtime/base/esm2022/services/spinner.service.mjs +1 -15
- package/runtime/base/esm2022/util/fragment-monitor.mjs +2 -23
- package/runtime/base/fesm2022/index.mjs +44 -377
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/services/app.manager.service.d.ts +1 -6
- package/runtime/base/services/app.service.d.ts +2 -12
- package/runtime/base/services/dynamic-component-ref-provider.service.d.ts +1 -2
- package/runtime/base/services/spinner.service.d.ts +1 -3
- package/runtime/base/util/fragment-monitor.d.ts +0 -6
- package/runtime/dynamic/bundles/index.umd.js +0 -5
- package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +1 -6
- package/runtime/dynamic/fesm2022/index.mjs +0 -5
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +14 -100
- package/security/bundles/index.umd.js +2 -41
- package/security/esm2022/security.service.mjs +3 -42
- package/security/fesm2022/index.mjs +2 -41
- package/security/fesm2022/index.mjs.map +1 -1
- package/security/security.service.d.ts +2 -5
- package/variables/bundles/index.umd.js +6 -50
- package/variables/esm2022/manager/action/notification-action.manager.mjs +3 -18
- package/variables/esm2022/manager/variable/base-variable.manager.mjs +2 -15
- package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +3 -13
- package/variables/esm2022/service/variables.service.mjs +2 -8
- package/variables/fesm2022/index.mjs +6 -50
- package/variables/fesm2022/index.mjs.map +1 -1
|
@@ -16,8 +16,6 @@ class SecurityService {
|
|
|
16
16
|
this.activatedRoute = activatedRoute;
|
|
17
17
|
this._location = _location;
|
|
18
18
|
this.requestQueue = {};
|
|
19
|
-
this.queryParamsSubscriptions = []; // MEMORY LEAK FIX: Track subscriptions
|
|
20
|
-
this.appSubscriptions = []; // MEMORY LEAK FIX: Track App subscriptions
|
|
21
19
|
}
|
|
22
20
|
isLoaded() {
|
|
23
21
|
return this.config;
|
|
@@ -157,13 +155,9 @@ class SecurityService {
|
|
|
157
155
|
*/
|
|
158
156
|
getCurrentRouteQueryParam(paramName) {
|
|
159
157
|
let paramVal;
|
|
160
|
-
|
|
161
|
-
// Note: This method is called synchronously, so the subscription completes immediately
|
|
162
|
-
// but we still store it to be safe
|
|
163
|
-
const subscription = this.activatedRoute.queryParams.subscribe(params => {
|
|
158
|
+
this.activatedRoute.queryParams.subscribe(params => {
|
|
164
159
|
paramVal = params[paramName];
|
|
165
160
|
});
|
|
166
|
-
subscription.unsubscribe(); // Immediate unsubscribe since we only need first value
|
|
167
161
|
return paramVal;
|
|
168
162
|
}
|
|
169
163
|
isNoPageLoaded() {
|
|
@@ -260,15 +254,11 @@ class SecurityService {
|
|
|
260
254
|
*/
|
|
261
255
|
getRedirectedRouteQueryParams() {
|
|
262
256
|
let queryParams = {};
|
|
263
|
-
|
|
264
|
-
// Note: This method is called synchronously, so the subscription completes immediately
|
|
265
|
-
// but we still store it to be safe
|
|
266
|
-
const subscription = this.activatedRoute.queryParams.subscribe((paramVal) => {
|
|
257
|
+
this.activatedRoute.queryParams.subscribe((paramVal) => {
|
|
267
258
|
forEach(paramVal, (val, key) => {
|
|
268
259
|
queryParams[key] = val;
|
|
269
260
|
});
|
|
270
261
|
});
|
|
271
|
-
subscription.unsubscribe(); // Immediate unsubscribe since we only need first value
|
|
272
262
|
return queryParams;
|
|
273
263
|
}
|
|
274
264
|
// accepts query object like {a:1, b:2} and returns a=1&b=2 string
|
|
@@ -365,17 +355,10 @@ class SecurityService {
|
|
|
365
355
|
resolve();
|
|
366
356
|
}
|
|
367
357
|
else {
|
|
368
|
-
// MEMORY LEAK FIX: Store unsubscribe function for cleanup
|
|
369
358
|
const unsubscribe = this.injector.get(App).subscribe('userLoggedIn', () => {
|
|
370
359
|
resolve();
|
|
371
360
|
unsubscribe();
|
|
372
|
-
// Remove from tracking array
|
|
373
|
-
const index = this.appSubscriptions.indexOf(unsubscribe);
|
|
374
|
-
if (index > -1) {
|
|
375
|
-
this.appSubscriptions.splice(index, 1);
|
|
376
|
-
}
|
|
377
361
|
});
|
|
378
|
-
this.appSubscriptions.push(unsubscribe);
|
|
379
362
|
}
|
|
380
363
|
}
|
|
381
364
|
else {
|
|
@@ -407,28 +390,6 @@ class SecurityService {
|
|
|
407
390
|
authInBrowser() {
|
|
408
391
|
return Promise.reject('This authInBrowser should not be called');
|
|
409
392
|
}
|
|
410
|
-
ngOnDestroy() {
|
|
411
|
-
// MEMORY LEAK FIX: Unsubscribe from all query params subscriptions
|
|
412
|
-
this.queryParamsSubscriptions.forEach(sub => {
|
|
413
|
-
if (sub && sub.unsubscribe) {
|
|
414
|
-
sub.unsubscribe();
|
|
415
|
-
}
|
|
416
|
-
});
|
|
417
|
-
this.queryParamsSubscriptions = [];
|
|
418
|
-
// MEMORY LEAK FIX: Unsubscribe from all App subscriptions
|
|
419
|
-
this.appSubscriptions.forEach(unsubscribe => {
|
|
420
|
-
if (unsubscribe) {
|
|
421
|
-
unsubscribe();
|
|
422
|
-
}
|
|
423
|
-
});
|
|
424
|
-
this.appSubscriptions = [];
|
|
425
|
-
// MEMORY LEAK FIX: Clear references
|
|
426
|
-
this.config = null;
|
|
427
|
-
this.lastLoggedInUser = null;
|
|
428
|
-
this.loggedInUser = null;
|
|
429
|
-
this.requestQueue = null;
|
|
430
|
-
this.loadPromise = null;
|
|
431
|
-
}
|
|
432
393
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SecurityService, deps: [{ token: i0.Injector }, { token: i1.AbstractHttpService }, { token: i2.Router }, { token: i2.ActivatedRoute }, { token: i3.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
433
394
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SecurityService }); }
|
|
434
395
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../projects/security/src/security.service.ts","../../../projects/security/src/index.ts"],"sourcesContent":["import { Injectable, Injector, OnDestroy } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport {\n AbstractHttpService,\n App,\n getClonedObject,\n getWmProjectProperties,\n triggerFn\n} from '@wm/core';\nimport {each, forEach, get, isEmpty, join, set} from \"lodash-es\";\ndeclare const _WM_APP_PROPERTIES;\n// Todo[Shubham]: Move below constants to a common file\nconst XSRF_COOKIE_NAME = 'wm_xsrf_token',\n isApplicationType = true;\n\n@Injectable()\nexport class SecurityService implements OnDestroy {\n config;\n lastLoggedInUser;\n loggedInUser;\n loadPromise: Promise<any>;\n requestQueue: any = {};\n private queryParamsSubscriptions: Array<{ unsubscribe: () => void }> = []; // MEMORY LEAK FIX: Track subscriptions\n private appSubscriptions: Array<() => void> = []; // MEMORY LEAK FIX: Track App subscriptions\n\n constructor(\n private injector: Injector,\n private $http: AbstractHttpService,\n private routerService: Router,\n private activatedRoute: ActivatedRoute,\n private _location: Location\n ) {}\n\n isLoaded() {\n return this.config;\n }\n\n get() {\n return this.config;\n }\n\n load(forceFlag?: boolean) {\n if(this.loadPromise) {return this.loadPromise;}\n // Check securityEnabled flag in _WM_APP_PROPERTIES\n if (!_WM_APP_PROPERTIES?.securityEnabled) {\n return Promise.resolve(null);\n }\n if (!forceFlag && this.config) {return Promise.resolve(this.config);}\n this.loadPromise = new Promise((resolve, reject) => {\n this.$http.send({'url': 'services/security/info', 'method': 'GET'}).then((response) => {\n this.config = response.body;\n _WM_APP_PROPERTIES['securityInfo'] = this.config\n this.lastLoggedInUser = getClonedObject(this.loggedInUser);\n this.loggedInUser = this.config.userInfo;\n resolve(response.body);\n }).catch((err)=>{\n reject(err);\n }).finally(()=>{\n this.loadPromise = null;\n });\n });\n return this.loadPromise;\n }\n\n /**\n * gets the security config from the deployed app (backend call)\n * @param success\n * @param error\n */\n getWebConfig(success, error) {\n if (this.get()) {\n // if already fetched, return it\n triggerFn(success, this.get());\n return;\n }\n this.load()\n .then(config => {\n triggerFn(success, config);\n }, error);\n }\n\n /**\n * Returns security config\n * @param successCallback\n * @param failureCallback\n */\n getConfig(successCallback, failureCallback) {\n function invokeQueuedCallbacks(id, method, data) {\n forEach(this.requestQueue[id], fn => triggerFn(fn[method], data));\n this.requestQueue[id] = null;\n }\n\n function onSuccess(config) {\n config = config ? config : {}\n config.homePage = getWmProjectProperties().homePage;\n if (config.userInfo) {\n // Backend returns landingPage instead of homePage, hence this statement(for consistency)\n // config.userInfo.homePage = config.userInfo.landingPage;\n }\n this.config = config;\n this.lastLoggedInUser = getClonedObject(this.loggedInUser);\n this.loggedInUser = config.userInfo;\n invokeQueuedCallbacks.call(this, 'config', 'success', this.get());\n }\n\n function onError(error) {\n /*if ($rootScope.isMobileApplicationType) {\n this.config = {\n 'securityEnabled': false,\n 'authenticated': false,\n 'homePage': _WM_APP_PROPERTIES.homePage,\n 'userInfo': null,\n 'login': null\n };\n invokeQueuedCallbacks('config', 'success', this.get());\n } else {*/\n invokeQueuedCallbacks.call(this, 'config', 'error', error);\n // }\n }\n\n if (this.get()) {\n // if already fetched, return it\n triggerFn(successCallback, this.get());\n return;\n }\n\n // Queue check, if same queue is already in progress, do not send another request\n this.requestQueue.config = this.requestQueue.config || [];\n this.requestQueue.config.push({\n success: successCallback,\n error: failureCallback\n });\n if (this.requestQueue.config.length > 1) {\n return;\n }\n\n // for web project, return config returned from backend API call.\n this.getWebConfig(onSuccess.bind(this), onError.bind(this));\n /* else {\n /!*\n * for mobile app, first get the mobile config (saved in the apk)\n * - if security not enabled, just return mobile config (no backend call required)\n * - else, get Web config (will be the same API hit for login) and merge the config with _mobileconfig\n *!/\n getMobileConfig(function (mobileconfig) {\n if (!mobileconfig.securityEnabled) {\n onSuccess(mobileconfig);\n } else {\n getWebConfig(function (config) {\n config = mergeWebAndMobileConfig(config);\n onSuccess(config);\n }, function () {onSuccess(mobileconfig); });\n }\n }, onError);\n }*/\n }\n\n getLastLoggedInUsername() {\n return this.lastLoggedInUser && this.lastLoggedInUser.userName;\n }\n\n /**\n * Returns the current page name\n * @returns {string}\n */\n getCurrentRoutePage() {\n const p = this._location.path();\n let lIndex = p.indexOf('?');\n lIndex = lIndex === -1 ? p.length : lIndex - 1;\n return p.substr(1, lIndex); // ignore the query params\n }\n\n /**\n * Returns Query params for specified param name in current Route\n * @param paramName, the param name whose query param value is to be retrieved\n * @returns {any}\n */\n getCurrentRouteQueryParam(paramName) {\n let paramVal;\n // MEMORY LEAK FIX: Store subscription for cleanup (though this is a synchronous read)\n // Note: This method is called synchronously, so the subscription completes immediately\n // but we still store it to be safe\n const subscription = this.activatedRoute.queryParams.subscribe(params => {\n paramVal = params[paramName];\n });\n subscription.unsubscribe(); // Immediate unsubscribe since we only need first value\n return paramVal;\n }\n\n isNoPageLoaded() {\n return !isEmpty(this.getCurrentRoutePage());\n }\n\n getPageByLoggedInUser() {\n const that = this;\n return new Promise((resolve) => {\n let page;\n if (!isApplicationType) {\n if (that.isNoPageLoaded()) {\n page = getWmProjectProperties().homePage;\n resolve(page);\n }\n } else {\n that.getConfig((config) => {\n if (config.securityEnabled && config.authenticated) {\n page = config.userInfo.landingPage || getWmProjectProperties().homePage;\n // override the default xsrf cookie name and xsrf header names with WaveMaker specific values\n if (that.isXsrfEnabled()) {\n // this.$http.defaults.xsrfCookieName = XSRF_COOKIE;\n // this.$http.defaults.xsrfHeaderName = config.csrfHeaderName;\n }\n } else {\n page = getWmProjectProperties().homePage;\n }\n resolve(page);\n }, function () {\n resolve(getWmProjectProperties().homePage);\n });\n }\n });\n }\n\n /**\n * Loads the App page as follows:\n * Security disabled:\n * - Home page\n * Security enabled:\n * - User is logged in, respective landing page is loaded\n * - Not logged in:\n * - Home page is public, loads the home page\n * - Home page not public, Login page(in config) is loaded\n * @param forcePageLoad\n * @returns {Promise<T>}\n */\n loadPageByUserRole(forcePageLoad?) {\n const that = this;\n return this.getPageByLoggedInUser().then(page => {\n if (that.isNoPageLoaded() || forcePageLoad) {\n // Reload the page when current page and post login landing page are same\n if (that.getCurrentRoutePage() === page) {\n (window.location as any).reload();\n } else {\n that.routerService.navigate([`/${page}`]);\n }\n }\n });\n }\n\n /**\n * Navigates to the current user's homePage based on the config in SecurityService\n * Assumption is the SecurityService is updated with the latest security config before making call to this function\n */\n navigateOnLogin() {\n this.loadPageByUserRole(true);\n }\n\n /**\n * Gets the page which needs to be redirected to on successful login\n * @param config,\n * @param page, page name for redirection\n * @returns {any|string}\n */\n getRedirectPage(config, page?) {\n const homePage = getWmProjectProperties().homePage,\n loginPage = get(config, 'loginConfig.pageName');\n let prevRedirectPage,\n redirectPage = page || this.getCurrentRoutePage();\n\n // if user is already on Home page or Login page, they should not be redirected to that page, hence return undefined\n if (redirectPage === homePage || redirectPage === loginPage) {\n /*\n * find previous redirect page from URL, if exists, user should redirect to that page.\n * USE CASE:\n * user is on http://localhost:8080/app/#/Login?redirectTo=page\n * a variable call fails resulting 401\n * in this case, redirectTo page should be 'page' and not undefined\n */\n prevRedirectPage = this.getCurrentRouteQueryParam('redirectTo');\n redirectPage = !isEmpty(prevRedirectPage) ? prevRedirectPage : undefined;\n }\n\n return redirectPage;\n }\n\n /**\n * Returns all the query params(including page params and redirect to params) associated with redirected page\n */\n getRedirectedRouteQueryParams() {\n let queryParams = {};\n // MEMORY LEAK FIX: Store subscription for cleanup (though this is a synchronous read)\n // Note: This method is called synchronously, so the subscription completes immediately\n // but we still store it to be safe\n const subscription = this.activatedRoute.queryParams.subscribe((paramVal) => {\n forEach(paramVal, (val, key) => {\n queryParams[key] = val;\n });\n });\n subscription.unsubscribe(); // Immediate unsubscribe since we only need first value\n return queryParams;\n }\n\n // accepts query object like {a:1, b:2} and returns a=1&b=2 string\n getQueryString(queryObject) {\n const params = [];\n forEach(queryObject, function (value, key) {\n params.push(key + '=' + value);\n });\n return join(params, '&');\n }\n\n appLogin(params, successCallback, failureCallback) {\n let payload = '';\n\n // encode all parameters\n each(params, function (value, name) {\n payload += (payload ? '&' : '') + encodeURIComponent(name) + '=' + encodeURIComponent(value);\n });\n\n return this.$http.send({\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n url: 'j_spring_security_check',\n 'data': payload\n }).then((response) => {\n const xsrfCookieValue = response.body ? response.body[XSRF_COOKIE_NAME] : '';\n\n // override the default xsrf cookie name and xsrf header names with WaveMaker specific values\n if (xsrfCookieValue) {\n }\n // After the successful login in device, this function triggers the pending onLoginCallbacks.\n this.injector.get(App).notify('userLoggedIn', {});\n triggerFn(successCallback, response);\n }, failureCallback);\n }\n\n /**\n * The API is used to check if the user is authenticated in the RUN mode.\n *\n * @param {function} successCallback to be called on success\n * @param {function} failureCallback to be called on failure\n */\n isAuthenticated(successCallback, failureCallback) {\n this.getConfig(function (config) {\n triggerFn(successCallback, config.authenticated);\n }, failureCallback);\n }\n\n /**\n * The API is used to logout of the app.\n *\n * @param {function} successCallback to be called on success\n * @param {function} failureCallback to be called on failure\n */\n appLogout(successCallback, failureCallback) {\n return this.$http.send({\n target: 'Security',\n url: 'j_spring_security_logout',\n method: 'POST',\n responseType: 'text',\n byPassResult: true\n }).then((response) => {\n set(this.get(), 'authenticated', false);\n set(this.get(), 'userInfo', null);\n this.injector.get(App).notify('userLoggedOut', {});\n triggerFn(successCallback, response);\n }, failureCallback);\n }\n\n /**\n * Checks and return the cookie\n * @param name, cookie key\n * @returns {string}\n */\n getCookieByName(name) {\n // Todo: Shubham Implement cookie native js\n return 'cookie';\n }\n\n /**\n * This function returns the cookieValue if xsrf is enabled.\n * In device, xsrf cookie is stored in localStorage.\n * @returns xsrf cookie value\n */\n isXsrfEnabled() {\n return this.getCookieByName(XSRF_COOKIE_NAME);\n }\n\n /**\n * This function returns a promise. Promise is resolved when security is\n * 1. disabled\n * 2. enabled and user is authenticated\n * 3. enabled and user is not authenticated, then promise is resolved on user login\n * @returns {*} promise\n */\n public onUserLogin(): Promise<any> {\n return new Promise<void>((resolve, reject) => {\n this.getConfig(config => {\n if (config.securityEnabled) {\n if (config.authenticated) {\n resolve();\n } else {\n // MEMORY LEAK FIX: Store unsubscribe function for cleanup\n const unsubscribe = this.injector.get(App).subscribe('userLoggedIn', () => {\n resolve();\n unsubscribe();\n // Remove from tracking array\n const index = this.appSubscriptions.indexOf(unsubscribe);\n if (index > -1) {\n this.appSubscriptions.splice(index, 1);\n }\n });\n this.appSubscriptions.push(unsubscribe);\n }\n } else {\n resolve();\n }\n }, reject);\n });\n }\n\n /**\n * @returns a promise that is resolved with logged-in-user\n */\n getLoggedInUser() {\n return new Promise<any>((resolve, reject) => {\n this.getConfig((config) => {\n if (config && config.userInfo) {\n resolve(config.userInfo);\n } else {\n reject();\n }\n }, reject);\n });\n }\n\n /**\n * This is for mobile apps to authenticate via browser.\n *\n * @returns a promise that is resolved after login\n */\n authInBrowser(): Promise<any> {\n return Promise.reject('This authInBrowser should not be called');\n }\n\n ngOnDestroy() {\n // MEMORY LEAK FIX: Unsubscribe from all query params subscriptions\n this.queryParamsSubscriptions.forEach(sub => {\n if (sub && sub.unsubscribe) {\n sub.unsubscribe();\n }\n });\n this.queryParamsSubscriptions = [];\n\n // MEMORY LEAK FIX: Unsubscribe from all App subscriptions\n this.appSubscriptions.forEach(unsubscribe => {\n if (unsubscribe) {\n unsubscribe();\n }\n });\n this.appSubscriptions = [];\n\n // MEMORY LEAK FIX: Clear references\n this.config = null;\n this.lastLoggedInUser = null;\n this.loggedInUser = null;\n this.requestQueue = null;\n this.loadPromise = null;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../projects/security/src/security.service.ts","../../../projects/security/src/index.ts"],"sourcesContent":["import { Injectable, Injector } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport {\n AbstractHttpService,\n App,\n getClonedObject,\n getWmProjectProperties,\n triggerFn\n} from '@wm/core';\nimport {each, forEach, get, isEmpty, join, set} from \"lodash-es\";\ndeclare const _WM_APP_PROPERTIES;\n// Todo[Shubham]: Move below constants to a common file\nconst XSRF_COOKIE_NAME = 'wm_xsrf_token',\n isApplicationType = true;\n\n@Injectable()\nexport class SecurityService {\n config;\n lastLoggedInUser;\n loggedInUser;\n loadPromise: Promise<any>;\n requestQueue: any = {};\n\n constructor(\n private injector: Injector,\n private $http: AbstractHttpService,\n private routerService: Router,\n private activatedRoute: ActivatedRoute,\n private _location: Location\n ) {}\n\n isLoaded() {\n return this.config;\n }\n\n get() {\n return this.config;\n }\n\n load(forceFlag?: boolean) {\n if(this.loadPromise) {return this.loadPromise;}\n // Check securityEnabled flag in _WM_APP_PROPERTIES\n if (!_WM_APP_PROPERTIES?.securityEnabled) {\n return Promise.resolve(null);\n }\n if (!forceFlag && this.config) {return Promise.resolve(this.config);}\n this.loadPromise = new Promise((resolve, reject) => {\n this.$http.send({'url': 'services/security/info', 'method': 'GET'}).then((response) => {\n this.config = response.body;\n _WM_APP_PROPERTIES['securityInfo'] = this.config\n this.lastLoggedInUser = getClonedObject(this.loggedInUser);\n this.loggedInUser = this.config.userInfo;\n resolve(response.body);\n }).catch((err)=>{\n reject(err);\n }).finally(()=>{\n this.loadPromise = null;\n });\n });\n return this.loadPromise;\n }\n\n /**\n * gets the security config from the deployed app (backend call)\n * @param success\n * @param error\n */\n getWebConfig(success, error) {\n if (this.get()) {\n // if already fetched, return it\n triggerFn(success, this.get());\n return;\n }\n this.load()\n .then(config => {\n triggerFn(success, config);\n }, error);\n }\n\n /**\n * Returns security config\n * @param successCallback\n * @param failureCallback\n */\n getConfig(successCallback, failureCallback) {\n function invokeQueuedCallbacks(id, method, data) {\n forEach(this.requestQueue[id], fn => triggerFn(fn[method], data));\n this.requestQueue[id] = null;\n }\n\n function onSuccess(config) {\n config = config ? config : {}\n config.homePage = getWmProjectProperties().homePage;\n if (config.userInfo) {\n // Backend returns landingPage instead of homePage, hence this statement(for consistency)\n // config.userInfo.homePage = config.userInfo.landingPage;\n }\n this.config = config;\n this.lastLoggedInUser = getClonedObject(this.loggedInUser);\n this.loggedInUser = config.userInfo;\n invokeQueuedCallbacks.call(this, 'config', 'success', this.get());\n }\n\n function onError(error) {\n /*if ($rootScope.isMobileApplicationType) {\n this.config = {\n 'securityEnabled': false,\n 'authenticated': false,\n 'homePage': _WM_APP_PROPERTIES.homePage,\n 'userInfo': null,\n 'login': null\n };\n invokeQueuedCallbacks('config', 'success', this.get());\n } else {*/\n invokeQueuedCallbacks.call(this, 'config', 'error', error);\n // }\n }\n\n if (this.get()) {\n // if already fetched, return it\n triggerFn(successCallback, this.get());\n return;\n }\n\n // Queue check, if same queue is already in progress, do not send another request\n this.requestQueue.config = this.requestQueue.config || [];\n this.requestQueue.config.push({\n success: successCallback,\n error: failureCallback\n });\n if (this.requestQueue.config.length > 1) {\n return;\n }\n\n // for web project, return config returned from backend API call.\n this.getWebConfig(onSuccess.bind(this), onError.bind(this));\n /* else {\n /!*\n * for mobile app, first get the mobile config (saved in the apk)\n * - if security not enabled, just return mobile config (no backend call required)\n * - else, get Web config (will be the same API hit for login) and merge the config with _mobileconfig\n *!/\n getMobileConfig(function (mobileconfig) {\n if (!mobileconfig.securityEnabled) {\n onSuccess(mobileconfig);\n } else {\n getWebConfig(function (config) {\n config = mergeWebAndMobileConfig(config);\n onSuccess(config);\n }, function () {onSuccess(mobileconfig); });\n }\n }, onError);\n }*/\n }\n\n getLastLoggedInUsername() {\n return this.lastLoggedInUser && this.lastLoggedInUser.userName;\n }\n\n /**\n * Returns the current page name\n * @returns {string}\n */\n getCurrentRoutePage() {\n const p = this._location.path();\n let lIndex = p.indexOf('?');\n lIndex = lIndex === -1 ? p.length : lIndex - 1;\n return p.substr(1, lIndex); // ignore the query params\n }\n\n /**\n * Returns Query params for specified param name in current Route\n * @param paramName, the param name whose query param value is to be retrieved\n * @returns {any}\n */\n getCurrentRouteQueryParam(paramName) {\n let paramVal;\n this.activatedRoute.queryParams.subscribe(params => {\n paramVal = params[paramName];\n });\n return paramVal;\n }\n\n isNoPageLoaded() {\n return !isEmpty(this.getCurrentRoutePage());\n }\n\n getPageByLoggedInUser() {\n const that = this;\n return new Promise((resolve) => {\n let page;\n if (!isApplicationType) {\n if (that.isNoPageLoaded()) {\n page = getWmProjectProperties().homePage;\n resolve(page);\n }\n } else {\n that.getConfig((config) => {\n if (config.securityEnabled && config.authenticated) {\n page = config.userInfo.landingPage || getWmProjectProperties().homePage;\n // override the default xsrf cookie name and xsrf header names with WaveMaker specific values\n if (that.isXsrfEnabled()) {\n // this.$http.defaults.xsrfCookieName = XSRF_COOKIE;\n // this.$http.defaults.xsrfHeaderName = config.csrfHeaderName;\n }\n } else {\n page = getWmProjectProperties().homePage;\n }\n resolve(page);\n }, function () {\n resolve(getWmProjectProperties().homePage);\n });\n }\n });\n }\n\n /**\n * Loads the App page as follows:\n * Security disabled:\n * - Home page\n * Security enabled:\n * - User is logged in, respective landing page is loaded\n * - Not logged in:\n * - Home page is public, loads the home page\n * - Home page not public, Login page(in config) is loaded\n * @param forcePageLoad\n * @returns {Promise<T>}\n */\n loadPageByUserRole(forcePageLoad?) {\n const that = this;\n return this.getPageByLoggedInUser().then(page => {\n if (that.isNoPageLoaded() || forcePageLoad) {\n // Reload the page when current page and post login landing page are same\n if (that.getCurrentRoutePage() === page) {\n (window.location as any).reload();\n } else {\n that.routerService.navigate([`/${page}`]);\n }\n }\n });\n }\n\n /**\n * Navigates to the current user's homePage based on the config in SecurityService\n * Assumption is the SecurityService is updated with the latest security config before making call to this function\n */\n navigateOnLogin() {\n this.loadPageByUserRole(true);\n }\n\n /**\n * Gets the page which needs to be redirected to on successful login\n * @param config,\n * @param page, page name for redirection\n * @returns {any|string}\n */\n getRedirectPage(config, page?) {\n const homePage = getWmProjectProperties().homePage,\n loginPage = get(config, 'loginConfig.pageName');\n let prevRedirectPage,\n redirectPage = page || this.getCurrentRoutePage();\n\n // if user is already on Home page or Login page, they should not be redirected to that page, hence return undefined\n if (redirectPage === homePage || redirectPage === loginPage) {\n /*\n * find previous redirect page from URL, if exists, user should redirect to that page.\n * USE CASE:\n * user is on http://localhost:8080/app/#/Login?redirectTo=page\n * a variable call fails resulting 401\n * in this case, redirectTo page should be 'page' and not undefined\n */\n prevRedirectPage = this.getCurrentRouteQueryParam('redirectTo');\n redirectPage = !isEmpty(prevRedirectPage) ? prevRedirectPage : undefined;\n }\n\n return redirectPage;\n }\n\n /**\n * Returns all the query params(including page params and redirect to params) associated with redirected page\n */\n getRedirectedRouteQueryParams() {\n let queryParams = {};\n this.activatedRoute.queryParams.subscribe((paramVal) => {\n forEach(paramVal, (val, key) => {\n queryParams[key] = val;\n });\n });\n return queryParams;\n }\n\n // accepts query object like {a:1, b:2} and returns a=1&b=2 string\n getQueryString(queryObject) {\n const params = [];\n forEach(queryObject, function (value, key) {\n params.push(key + '=' + value);\n });\n return join(params, '&');\n }\n\n appLogin(params, successCallback, failureCallback) {\n let payload = '';\n\n // encode all parameters\n each(params, function (value, name) {\n payload += (payload ? '&' : '') + encodeURIComponent(name) + '=' + encodeURIComponent(value);\n });\n\n return this.$http.send({\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded'\n },\n url: 'j_spring_security_check',\n 'data': payload\n }).then((response) => {\n const xsrfCookieValue = response.body ? response.body[XSRF_COOKIE_NAME] : '';\n\n // override the default xsrf cookie name and xsrf header names with WaveMaker specific values\n if (xsrfCookieValue) {\n }\n // After the successful login in device, this function triggers the pending onLoginCallbacks.\n this.injector.get(App).notify('userLoggedIn', {});\n triggerFn(successCallback, response);\n }, failureCallback);\n }\n\n /**\n * The API is used to check if the user is authenticated in the RUN mode.\n *\n * @param {function} successCallback to be called on success\n * @param {function} failureCallback to be called on failure\n */\n isAuthenticated(successCallback, failureCallback) {\n this.getConfig(function (config) {\n triggerFn(successCallback, config.authenticated);\n }, failureCallback);\n }\n\n /**\n * The API is used to logout of the app.\n *\n * @param {function} successCallback to be called on success\n * @param {function} failureCallback to be called on failure\n */\n appLogout(successCallback, failureCallback) {\n return this.$http.send({\n target: 'Security',\n url: 'j_spring_security_logout',\n method: 'POST',\n responseType: 'text',\n byPassResult: true\n }).then((response) => {\n set(this.get(), 'authenticated', false);\n set(this.get(), 'userInfo', null);\n this.injector.get(App).notify('userLoggedOut', {});\n triggerFn(successCallback, response);\n }, failureCallback);\n }\n\n /**\n * Checks and return the cookie\n * @param name, cookie key\n * @returns {string}\n */\n getCookieByName(name) {\n // Todo: Shubham Implement cookie native js\n return 'cookie';\n }\n\n /**\n * This function returns the cookieValue if xsrf is enabled.\n * In device, xsrf cookie is stored in localStorage.\n * @returns xsrf cookie value\n */\n isXsrfEnabled() {\n return this.getCookieByName(XSRF_COOKIE_NAME);\n }\n\n /**\n * This function returns a promise. Promise is resolved when security is\n * 1. disabled\n * 2. enabled and user is authenticated\n * 3. enabled and user is not authenticated, then promise is resolved on user login\n * @returns {*} promise\n */\n public onUserLogin(): Promise<any> {\n return new Promise<void>((resolve, reject) => {\n this.getConfig(config => {\n if (config.securityEnabled) {\n if (config.authenticated) {\n resolve();\n } else {\n const unsubscribe = this.injector.get(App).subscribe('userLoggedIn', () => {\n resolve();\n unsubscribe();\n });\n }\n } else {\n resolve();\n }\n }, reject);\n });\n }\n\n /**\n * @returns a promise that is resolved with logged-in-user\n */\n getLoggedInUser() {\n return new Promise<any>((resolve, reject) => {\n this.getConfig((config) => {\n if (config && config.userInfo) {\n resolve(config.userInfo);\n } else {\n reject();\n }\n }, reject);\n });\n }\n\n /**\n * This is for mobile apps to authenticate via browser.\n *\n * @returns a promise that is resolved after login\n */\n authInBrowser(): Promise<any> {\n return Promise.reject('This authInBrowser should not be called');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Injector
|
|
1
|
+
import { Injector } from '@angular/core';
|
|
2
2
|
import { Location } from '@angular/common';
|
|
3
3
|
import { ActivatedRoute, Router } from '@angular/router';
|
|
4
4
|
import { AbstractHttpService } from '@wm/core';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class SecurityService
|
|
6
|
+
export declare class SecurityService {
|
|
7
7
|
private injector;
|
|
8
8
|
private $http;
|
|
9
9
|
private routerService;
|
|
@@ -14,8 +14,6 @@ export declare class SecurityService implements OnDestroy {
|
|
|
14
14
|
loggedInUser: any;
|
|
15
15
|
loadPromise: Promise<any>;
|
|
16
16
|
requestQueue: any;
|
|
17
|
-
private queryParamsSubscriptions;
|
|
18
|
-
private appSubscriptions;
|
|
19
17
|
constructor(injector: Injector, $http: AbstractHttpService, routerService: Router, activatedRoute: ActivatedRoute, _location: Location);
|
|
20
18
|
isLoaded(): any;
|
|
21
19
|
get(): any;
|
|
@@ -121,7 +119,6 @@ export declare class SecurityService implements OnDestroy {
|
|
|
121
119
|
* @returns a promise that is resolved after login
|
|
122
120
|
*/
|
|
123
121
|
authInBrowser(): Promise<any>;
|
|
124
|
-
ngOnDestroy(): void;
|
|
125
122
|
static ɵfac: i0.ɵɵFactoryDeclaration<SecurityService, never>;
|
|
126
123
|
static ɵprov: i0.ɵɵInjectableDeclaration<SecurityService>;
|
|
127
124
|
}
|
|
@@ -1146,26 +1146,11 @@
|
|
|
1146
1146
|
toaster = exports.toasterService.show(type, title, body || null, { positionClass: positionClass, timeOut: duration, enableHtml: true });
|
|
1147
1147
|
}
|
|
1148
1148
|
// callbacks
|
|
1149
|
-
// MEMORY LEAK FIX: Store subscriptions for cleanup (though toaster is short-lived, we track for safety)
|
|
1150
1149
|
if (variable.onClick) {
|
|
1151
|
-
|
|
1152
|
-
// Store subscription on toaster for cleanup (toaster handles its own lifecycle)
|
|
1153
|
-
if (toaster && !toaster._subscriptions) {
|
|
1154
|
-
toaster._subscriptions = [];
|
|
1155
|
-
}
|
|
1156
|
-
if (toaster && toaster._subscriptions) {
|
|
1157
|
-
toaster._subscriptions.push(onClickSubscription);
|
|
1158
|
-
}
|
|
1150
|
+
toaster.onTap.subscribe(this.onToasterClick.bind(this, variable));
|
|
1159
1151
|
}
|
|
1160
1152
|
if (variable.onHide) {
|
|
1161
|
-
|
|
1162
|
-
// Store subscription on toaster for cleanup (toaster handles its own lifecycle)
|
|
1163
|
-
if (toaster && !toaster._subscriptions) {
|
|
1164
|
-
toaster._subscriptions = [];
|
|
1165
|
-
}
|
|
1166
|
-
if (toaster && toaster._subscriptions) {
|
|
1167
|
-
toaster._subscriptions.push(onHideSubscription);
|
|
1168
|
-
}
|
|
1153
|
+
toaster.onHidden.subscribe(this.onToasterHide.bind(this, variable));
|
|
1169
1154
|
}
|
|
1170
1155
|
}
|
|
1171
1156
|
getDialogConfig(variable, options, dialogId, closeCallBackFn) {
|
|
@@ -1314,20 +1299,7 @@
|
|
|
1314
1299
|
// send the notification manually to hide any context spinners on page.
|
|
1315
1300
|
// [TODO]: any spinners on widget listening on this variable will also go off. Need to see an approach to sovle that.
|
|
1316
1301
|
this.notifyInflight(variable, false, err);
|
|
1317
|
-
|
|
1318
|
-
const error401Subscription = err._401Subscriber.asObservable().subscribe(response => {
|
|
1319
|
-
resolve(response);
|
|
1320
|
-
// Unsubscribe after resolution
|
|
1321
|
-
if (error401Subscription && !error401Subscription.closed) {
|
|
1322
|
-
error401Subscription.unsubscribe();
|
|
1323
|
-
}
|
|
1324
|
-
}, e => {
|
|
1325
|
-
reject(e);
|
|
1326
|
-
// Unsubscribe after rejection
|
|
1327
|
-
if (error401Subscription && !error401Subscription.closed) {
|
|
1328
|
-
error401Subscription.unsubscribe();
|
|
1329
|
-
}
|
|
1330
|
-
});
|
|
1302
|
+
err._401Subscriber.asObservable().subscribe(response => resolve(response), e => reject(e));
|
|
1331
1303
|
}
|
|
1332
1304
|
else {
|
|
1333
1305
|
reject(err);
|
|
@@ -2529,13 +2501,7 @@
|
|
|
2529
2501
|
}
|
|
2530
2502
|
}
|
|
2531
2503
|
freeSocket(variable) {
|
|
2532
|
-
|
|
2533
|
-
const socket = this.scope_var_socket_map.get(variable);
|
|
2534
|
-
if (socket) {
|
|
2535
|
-
// Clear socket reference from variable
|
|
2536
|
-
variable._socket = null;
|
|
2537
|
-
}
|
|
2538
|
-
this.scope_var_socket_map.delete(variable);
|
|
2504
|
+
this.scope_var_socket_map.set(variable, undefined);
|
|
2539
2505
|
}
|
|
2540
2506
|
/**
|
|
2541
2507
|
* calls the ON_CLOSE event on the variable
|
|
@@ -2612,11 +2578,7 @@
|
|
|
2612
2578
|
if (shouldClose === false) {
|
|
2613
2579
|
return;
|
|
2614
2580
|
}
|
|
2615
|
-
|
|
2616
|
-
socket.close();
|
|
2617
|
-
// MEMORY LEAK FIX: Clean up socket reference after closing
|
|
2618
|
-
this.freeSocket(variable);
|
|
2619
|
-
}
|
|
2581
|
+
socket.close();
|
|
2620
2582
|
}
|
|
2621
2583
|
/**
|
|
2622
2584
|
* sends a message to the existing socket connection on the variable
|
|
@@ -3075,13 +3037,7 @@
|
|
|
3075
3037
|
this.processBinding(varInstance, scope, 'dataBinding', this.getBindSourceTarget(varInstance));
|
|
3076
3038
|
varInstance.httpService = this.httpService;
|
|
3077
3039
|
varInstance.dateFormatter = new Formatter();
|
|
3078
|
-
|
|
3079
|
-
const afterInvokeUnsubscribe = varInstance.subscribe('afterInvoke', () => i1.$invokeWatchers(true));
|
|
3080
|
-
// Store on variable for potential manual cleanup if needed
|
|
3081
|
-
if (!varInstance._eventSubscriptions) {
|
|
3082
|
-
varInstance._eventSubscriptions = [];
|
|
3083
|
-
}
|
|
3084
|
-
varInstance._eventSubscriptions.push(afterInvokeUnsubscribe);
|
|
3040
|
+
varInstance.subscribe('afterInvoke', () => i1.$invokeWatchers(true));
|
|
3085
3041
|
if (varInstance.category === 'wm.LiveVariable' && varInstance.operation === 'read') {
|
|
3086
3042
|
i1.processFilterExpBindNode(varInstance._context, varInstance.filterExpressions, varInstance);
|
|
3087
3043
|
}
|
|
@@ -24,26 +24,11 @@ export class NotificationActionManager extends BaseActionManager {
|
|
|
24
24
|
toaster = toasterService.show(type, title, body || null, { positionClass: positionClass, timeOut: duration, enableHtml: true });
|
|
25
25
|
}
|
|
26
26
|
// callbacks
|
|
27
|
-
// MEMORY LEAK FIX: Store subscriptions for cleanup (though toaster is short-lived, we track for safety)
|
|
28
27
|
if (variable.onClick) {
|
|
29
|
-
|
|
30
|
-
// Store subscription on toaster for cleanup (toaster handles its own lifecycle)
|
|
31
|
-
if (toaster && !toaster._subscriptions) {
|
|
32
|
-
toaster._subscriptions = [];
|
|
33
|
-
}
|
|
34
|
-
if (toaster && toaster._subscriptions) {
|
|
35
|
-
toaster._subscriptions.push(onClickSubscription);
|
|
36
|
-
}
|
|
28
|
+
toaster.onTap.subscribe(this.onToasterClick.bind(this, variable));
|
|
37
29
|
}
|
|
38
30
|
if (variable.onHide) {
|
|
39
|
-
|
|
40
|
-
// Store subscription on toaster for cleanup (toaster handles its own lifecycle)
|
|
41
|
-
if (toaster && !toaster._subscriptions) {
|
|
42
|
-
toaster._subscriptions = [];
|
|
43
|
-
}
|
|
44
|
-
if (toaster && toaster._subscriptions) {
|
|
45
|
-
toaster._subscriptions.push(onHideSubscription);
|
|
46
|
-
}
|
|
31
|
+
toaster.onHidden.subscribe(this.onToasterHide.bind(this, variable));
|
|
47
32
|
}
|
|
48
33
|
}
|
|
49
34
|
getDialogConfig(variable, options, dialogId, closeCallBackFn) {
|
|
@@ -149,4 +134,4 @@ export class NotificationActionManager extends BaseActionManager {
|
|
|
149
134
|
return variable.dataBinding.cancelButtonText;
|
|
150
135
|
}
|
|
151
136
|
}
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWFjdGlvbi5tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFyaWFibGVzL3NyYy9tYW5hZ2VyL2FjdGlvbi9ub3RpZmljYXRpb24tYWN0aW9uLm1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEQsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFL0MsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGlCQUFpQjtJQUVwRCxjQUFjLENBQUMsUUFBUTtRQUMzQixnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxhQUFhLENBQUMsUUFBUTtRQUMxQixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsT0FBTztRQUN0QyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQzlFLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUNuRCxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFDckIsYUFBYSxHQUFHLFFBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLElB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Q0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQVE7UUFDakIsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTO1FBQzVCLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDdEIsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO0lBQzFDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxRQUFRO1FBQ3hCLE9BQU8sUUFBUSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqRCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUk7UUFDOUIsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqQixRQUFRLENBQUMsV0FBVyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTyxRQUFRLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDO0lBQ2pELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VBY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi9iYXNlLWFjdGlvbi5tYW5hZ2VyJztcbmltcG9ydCB7IGluaXRpYXRlQ2FsbGJhY2ssIHRvYXN0ZXJTZXJ2aWNlLCBkaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbC92YXJpYWJsZS92YXJpYWJsZXMudXRpbHMnO1xuaW1wb3J0IHsgZ2V0V21Qcm9qZWN0UHJvcGVydGllcyB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7Y2FwaXRhbGl6ZSwgaXNTdHJpbmd9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkFjdGlvbk1hbmFnZXIgZXh0ZW5kcyBCYXNlQWN0aW9uTWFuYWdlciB7XG5cbiAgICBwcml2YXRlIG9uVG9hc3RlckNsaWNrKHZhcmlhYmxlKSB7XG4gICAgICAgIGluaXRpYXRlQ2FsbGJhY2soJ29uQ2xpY2snLCB2YXJpYWJsZSwgJycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Ub2FzdGVySGlkZSh2YXJpYWJsZSkge1xuICAgICAgICBpbml0aWF0ZUNhbGxiYWNrKCdvbkhpZGUnLCB2YXJpYWJsZSwgJycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5VmlhVG9hc3Rlcih2YXJpYWJsZSwgb3B0aW9ucykge1xuICAgICAgICBjb25zdCB0eXBlID0gKG9wdGlvbnMuY2xhc3MgfHwgdmFyaWFibGUuZGF0YUJpbmRpbmcuY2xhc3MgfHwgJ2luZm8nKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgYm9keSA9IG9wdGlvbnMubWVzc2FnZSB8fCB2YXJpYWJsZS5kYXRhQmluZGluZy50ZXh0LFxuICAgICAgICAgICAgdGl0bGUgPSBvcHRpb25zLnRpdGxlLFxuICAgICAgICAgICAgcG9zaXRpb25DbGFzcyA9ICd0b2FzdC0nICsgKG9wdGlvbnMucG9zaXRpb24gfHwgdmFyaWFibGUuZGF0YUJpbmRpbmcudG9hc3RlclBvc2l0aW9uIHx8ICdib3R0b20gcmlnaHQnKS5yZXBsYWNlKCcgJywgJy0nKSxcbiAgICAgICAgICAgIHBhcnRpYWxQYWdlID0gdmFyaWFibGUuZGF0YUJpbmRpbmcucGFnZSxcbiAgICAgICAgICAgIERFRkFVTFRfRFVSQVRJT04gPSAzMDAwO1xuICAgICAgICBsZXQgZHVyYXRpb24gPSBwYXJzZUludChvcHRpb25zLmR1cmF0aW9uIHx8IHZhcmlhYmxlLmRhdGFCaW5kaW5nLmR1cmF0aW9uLCBudWxsKSxcbiAgICAgICAgICAgIHRvYXN0ZXI7XG5cbiAgICAgICAgLy8gZHVyYXRpb25cbiAgICAgICAgaWYgKCFkdXJhdGlvbikge1xuICAgICAgICAgICAgZHVyYXRpb24gPSAoZHVyYXRpb24gIT09IDAgJiYgdHlwZSA9PT0gJ3N1Y2Nlc3MnKSA/IERFRkFVTFRfRFVSQVRJT04gOiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YXJpYWJsZS5kYXRhQmluZGluZy5jb250ZW50ICYmIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmNvbnRlbnQgPT09ICdwYWdlJyAmJiBwYXJ0aWFsUGFnZSkge1xuICAgICAgICAgICAgdG9hc3RlciA9IHRvYXN0ZXJTZXJ2aWNlLnNob3dDdXN0b20ocGFydGlhbFBhZ2UsIHtwb3NpdGlvbkNsYXNzOiBwb3NpdGlvbkNsYXNzLCB0aW1lT3V0OiBkdXJhdGlvbixcbiAgICAgICAgICAgICAgICBwYXJ0aWFsUGFyYW1zOiB2YXJpYWJsZS5fYmluZGRhdGFTZXQsIGNvbnRleHQ6IHZhcmlhYmxlLl9jb250ZXh0fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b2FzdGVyID0gdG9hc3RlclNlcnZpY2Uuc2hvdyh0eXBlLCB0aXRsZSwgYm9keSB8fCBudWxsLCB7cG9zaXRpb25DbGFzczogcG9zaXRpb25DbGFzcywgdGltZU91dDogZHVyYXRpb24sIGVuYWJsZUh0bWw6IHRydWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNhbGxiYWNrc1xuICAgICAgICAvLyBNRU1PUlkgTEVBSyBGSVg6IFN0b3JlIHN1YnNjcmlwdGlvbnMgZm9yIGNsZWFudXAgKHRob3VnaCB0b2FzdGVyIGlzIHNob3J0LWxpdmVkLCB3ZSB0cmFjayBmb3Igc2FmZXR5KVxuICAgICAgICBpZiAodmFyaWFibGUub25DbGljaykge1xuICAgICAgICAgICAgY29uc3Qgb25DbGlja1N1YnNjcmlwdGlvbiA9IHRvYXN0ZXIub25UYXAuc3Vic2NyaWJlKCB0aGlzLm9uVG9hc3RlckNsaWNrLmJpbmQodGhpcywgdmFyaWFibGUpICk7XG4gICAgICAgICAgICAvLyBTdG9yZSBzdWJzY3JpcHRpb24gb24gdG9hc3RlciBmb3IgY2xlYW51cCAodG9hc3RlciBoYW5kbGVzIGl0cyBvd24gbGlmZWN5Y2xlKVxuICAgICAgICAgICAgaWYgKHRvYXN0ZXIgJiYgIXRvYXN0ZXIuX3N1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdGVyLl9zdWJzY3JpcHRpb25zID0gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodG9hc3RlciAmJiB0b2FzdGVyLl9zdWJzY3JpcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdG9hc3Rlci5fc3Vic2NyaXB0aW9ucy5wdXNoKG9uQ2xpY2tTdWJzY3JpcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh2YXJpYWJsZS5vbkhpZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IG9uSGlkZVN1YnNjcmlwdGlvbiA9IHRvYXN0ZXIub25IaWRkZW4uc3Vic2NyaWJlKCB0aGlzLm9uVG9hc3RlckhpZGUuYmluZCh0aGlzLCB2YXJpYWJsZSkgKTtcbiAgICAgICAgICAgIC8vIFN0b3JlIHN1YnNjcmlwdGlvbiBvbiB0b2FzdGVyIGZvciBjbGVhbnVwICh0b2FzdGVyIGhhbmRsZXMgaXRzIG93biBsaWZlY3ljbGUpXG4gICAgICAgICAgICBpZiAodG9hc3RlciAmJiAhdG9hc3Rlci5fc3Vic2NyaXB0aW9ucykge1xuICAgICAgICAgICAgICAgIHRvYXN0ZXIuX3N1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0b2FzdGVyICYmIHRvYXN0ZXIuX3N1YnNjcmlwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0b2FzdGVyLl9zdWJzY3JpcHRpb25zLnB1c2gob25IaWRlU3Vic2NyaXB0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGlhbG9nQ29uZmlnKHZhcmlhYmxlLCBvcHRpb25zLCBkaWFsb2dJZCwgY2xvc2VDYWxsQmFja0ZuKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAndGl0bGUnIDogb3B0aW9ucy50aXRsZSB8fCB2YXJpYWJsZS5kYXRhQmluZGluZy50aXRsZSxcbiAgICAgICAgICAgICd0ZXh0JyA6IG9wdGlvbnMubWVzc2FnZSB8fCB2YXJpYWJsZS5kYXRhQmluZGluZy50ZXh0LFxuICAgICAgICAgICAgJ29rQnV0dG9uVGV4dCcgOiBvcHRpb25zLm9rQnV0dG9uVGV4dCB8fCB2YXJpYWJsZS5kYXRhQmluZGluZy5va0J1dHRvblRleHQgfHwgJ09LJyxcbiAgICAgICAgICAgICdjYW5jZWxCdXR0b25UZXh0JyA6IG9wdGlvbnMuY2FuY2VsQnV0dG9uVGV4dCB8fCB2YXJpYWJsZS5kYXRhQmluZGluZy5jYW5jZWxCdXR0b25UZXh0IHx8ICdDQU5DRUwnLFxuICAgICAgICAgICAgJ2FsZXJ0dHlwZScgOiBvcHRpb25zLmFsZXJ0dHlwZSB8fCB2YXJpYWJsZS5kYXRhQmluZGluZy5hbGVydHR5cGUgfHwgJ2luZm9ybWF0aW9uJyxcbiAgICAgICAgICAgIG9uT2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBDbG9zZSB0aGUgYWN0aW9uIGRpYWxvZyBhZnRlciB0cmlnZ2VyaW5nIG9uT2sgY2FsbGJhY2sgZXZlbnRcbiAgICAgICAgICAgICAgICBkaWFsb2dTZXJ2aWNlLmNsb3NlKGRpYWxvZ0lkLCB1bmRlZmluZWQsIGNsb3NlQ2FsbEJhY2tGbik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25DYW5jZWw6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpbml0aWF0ZUNhbGxiYWNrKCdvbkNhbmNlbCcsIHZhcmlhYmxlLCBvcHRpb25zLmRhdGEpO1xuICAgICAgICAgICAgICAgIC8vIENsb3NlIHRoZSBhY3Rpb24gZGlhbG9nIGFmdGVyIHRyaWdnZXJpbmcgb25DYW5jZWwgY2FsbGJhY2sgZXZlbnRcbiAgICAgICAgICAgICAgICBkaWFsb2dTZXJ2aWNlLmNsb3NlKGRpYWxvZ0lkLCB1bmRlZmluZWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpbml0aWF0ZUNhbGxiYWNrKCdvbkNsb3NlJywgdmFyaWFibGUsIG9wdGlvbnMuZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3RpZnlWaWFEaWFsb2codmFyaWFibGUsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgaXNQcmVmYWJUeXBlID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnR5cGUgPT09ICdQUkVGQUInO1xuICAgICAgICBjb25zdCBkaWFsb2dQcmVmaXggPSBpc1ByZWZhYlR5cGUgPyAnUHJlZmFiJyA6ICdDb21tb24nO1xuICAgICAgICBjb25zdCBkaWFsb2dJZCA9IGRpYWxvZ1ByZWZpeCArIGNhcGl0YWxpemUodmFyaWFibGUub3BlcmF0aW9uKSArICdEaWFsb2cnO1xuICAgICAgICBjb25zdCBjbG9zZUNhbGxCYWNrRm4gPSAoKSA9PiBpbml0aWF0ZUNhbGxiYWNrKCdvbk9rJywgdmFyaWFibGUsIG9wdGlvbnMuZGF0YSk7XG5cblxuICAgICAgICBsZXQgZGlhbG9nQ29uZmlnOiBhbnkgPSB0aGlzLmdldERpYWxvZ0NvbmZpZyh2YXJpYWJsZSwgb3B0aW9ucywgZGlhbG9nSWQsIGNsb3NlQ2FsbEJhY2tGbik7XG4gICAgICAgIGRpYWxvZ0NvbmZpZyA9IGlzUHJlZmFiVHlwZSA/IGRpYWxvZ0NvbmZpZyA6IHsgbm90aWZpY2F0aW9uOiBkaWFsb2dDb25maWcgfTtcbiAgICAgICAgZGlhbG9nU2VydmljZS5vcGVuKGRpYWxvZ0lkLCB1bmRlZmluZWQsIGRpYWxvZ0NvbmZpZyk7XG4gICAgfVxuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBQVUJMSUMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovL1xuXG4gICAgbm90aWZ5KHZhcmlhYmxlLCBvcHRpb25zLCBzdWNjZXNzLCBlcnJvcikge1xuICAgICAgICBjb25zdCBvcGVyYXRpb24gPSB2YXJpYWJsZS5vcGVyYXRpb247XG4gICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICd0b2FzdCcpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZ5VmlhVG9hc3Rlcih2YXJpYWJsZSwgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeVZpYURpYWxvZyh2YXJpYWJsZSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRNZXNzYWdlKHZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZS5kYXRhQmluZGluZy50ZXh0O1xuICAgIH1cblxuICAgIHNldE1lc3NhZ2UodmFyaWFibGUsIHRleHQpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHRleHQpKSB7XG4gICAgICAgICAgICB2YXJpYWJsZS5kYXRhQmluZGluZy50ZXh0ID0gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUJpbmRpbmcudGV4dDtcbiAgICB9XG5cbiAgICBnZXRPa0J1dHRvblRleHQodmFyaWFibGUpIHtcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmRhdGFCaW5kaW5nLm9rQnV0dG9uVGV4dDtcbiAgICB9XG4gICAgc2V0T2tCdXR0b25UZXh0KHZhcmlhYmxlLCB0ZXh0KSB7XG4gICAgICAgIGlmIChpc1N0cmluZyh0ZXh0KSkge1xuICAgICAgICAgICAgdmFyaWFibGUuZGF0YUJpbmRpbmcub2tCdXR0b25UZXh0ID0gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUJpbmRpbmcub2tCdXR0b25UZXh0O1xuICAgIH1cblxuICAgIGdldFRvYXN0ZXJEdXJhdGlvbih2YXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUJpbmRpbmcuZHVyYXRpb247XG4gICAgfVxuXG4gICAgc2V0VG9hc3RlckR1cmF0aW9uKHZhcmlhYmxlLCBkdXJhdGlvbikge1xuICAgICAgICB2YXJpYWJsZS5kYXRhQmluZGluZy5kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUJpbmRpbmcuZHVyYXRpb247XG4gICAgfVxuXG4gICAgZ2V0VG9hc3RlckNsYXNzKHZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZS5kYXRhQmluZGluZy5jbGFzcztcbiAgICB9XG5cbiAgICBzZXRUb2FzdGVyQ2xhc3ModmFyaWFibGUsIHR5cGUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHR5cGUpKSB7XG4gICAgICAgICAgICB2YXJpYWJsZS5kYXRhQmluZGluZy5jbGFzcyA9IHR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmNsYXNzO1xuICAgIH1cblxuICAgIGdldFRvYXN0ZXJQb3NpdGlvbih2YXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUJpbmRpbmcuY2xhc3M7XG4gICAgfVxuXG4gICAgc2V0VG9hc3RlclBvc2l0aW9uKHZhcmlhYmxlLCBwb3NpdGlvbikge1xuICAgICAgICBpZiAoaXNTdHJpbmcocG9zaXRpb24pKSB7XG4gICAgICAgICAgICB2YXJpYWJsZS5kYXRhQmluZGluZy5wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYWJsZS5kYXRhQmluZGluZy5wb3NpdGlvbjtcbiAgICB9XG5cbiAgICBnZXRBbGVydFR5cGUodmFyaWFibGUpIHtcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmFsZXJ0dHlwZTtcbiAgICB9XG5cbiAgICBzZXRBbGVydFR5cGUodmFyaWFibGUsIGFsZXJ0dHlwZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcoYWxlcnR0eXBlKSkge1xuICAgICAgICAgICAgdmFyaWFibGUuZGF0YUJpbmRpbmcuYWxlcnR0eXBlID0gYWxlcnR0eXBlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYWJsZS5kYXRhQmluZGluZy5hbGVydHR5cGU7XG4gICAgfVxuXG4gICAgZ2V0Q2FuY2VsQnV0dG9uVGV4dCh2YXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUJpbmRpbmcuY2FuY2VsQnV0dG9uVGV4dDtcbiAgICB9XG5cbiAgICBzZXRDYW5jZWxCdXR0b25UZXh0KHZhcmlhYmxlLCB0ZXh0KSB7XG4gICAgICAgIGlmIChpc1N0cmluZyh0ZXh0KSkge1xuICAgICAgICAgICAgdmFyaWFibGUuZGF0YUJpbmRpbmcuY2FuY2VsQnV0dG9uVGV4dCA9IHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmNhbmNlbEJ1dHRvblRleHQ7XG4gICAgfVxufVxuIl19
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLWFjdGlvbi5tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFyaWFibGVzL3NyYy9tYW5hZ2VyL2FjdGlvbi9ub3RpZmljYXRpb24tYWN0aW9uLm1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbEQsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFL0MsTUFBTSxPQUFPLHlCQUEwQixTQUFRLGlCQUFpQjtJQUVwRCxjQUFjLENBQUMsUUFBUTtRQUMzQixnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxhQUFhLENBQUMsUUFBUTtRQUMxQixnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsT0FBTztRQUN0QyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQzlFLElBQUksR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUNuRCxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFDckIsYUFBYSxHQUFHLFFBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLElB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LENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDO0lBQ2pELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VBY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi9iYXNlLWFjdGlvbi5tYW5hZ2VyJztcbmltcG9ydCB7IGluaXRpYXRlQ2FsbGJhY2ssIHRvYXN0ZXJTZXJ2aWNlLCBkaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbC92YXJpYWJsZS92YXJpYWJsZXMudXRpbHMnO1xuaW1wb3J0IHsgZ2V0V21Qcm9qZWN0UHJvcGVydGllcyB9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7Y2FwaXRhbGl6ZSwgaXNTdHJpbmd9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvbkFjdGlvbk1hbmFnZXIgZXh0ZW5kcyBCYXNlQWN0aW9uTWFuYWdlciB7XG5cbiAgICBwcml2YXRlIG9uVG9hc3RlckNsaWNrKHZhcmlhYmxlKSB7XG4gICAgICAgIGluaXRpYXRlQ2FsbGJhY2soJ29uQ2xpY2snLCB2YXJpYWJsZSwgJycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Ub2FzdGVySGlkZSh2YXJpYWJsZSkge1xuICAgICAgICBpbml0aWF0ZUNhbGxiYWNrKCdvbkhpZGUnLCB2YXJpYWJsZSwgJycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5VmlhVG9hc3Rlcih2YXJpYWJsZSwgb3B0aW9ucykge1xuICAgICAgICBjb25zdCB0eXBlID0gKG9wdGlvbnMuY2xhc3MgfHwgdmFyaWFibGUuZGF0YUJpbmRpbmcuY2xhc3MgfHwgJ2luZm8nKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgYm9keSA9IG9wdGlvbnMubWVzc2FnZSB8fCB2YXJpYWJsZS5kYXRhQmluZGluZy50ZXh0LFxuICAgICAgICAgICAgdGl0bGUgPSBvcHRpb25zLnRpdGxlLFxuICAgICAgICAgICAgcG9zaXRpb25DbGFzcyA9ICd0b2FzdC0nICsgKG9wdGlvbnMucG9zaXRpb24gfHwgdmFyaWFibGUuZGF0YUJpbmRpbmcudG9hc3RlclBvc2l0aW9uIHx8ICdib3R0b20gcmlnaHQnKS5yZXBsYWNlKCcgJywgJy0nKSxcbiAgICAgICAgICAgIHBhcnRpYWxQYWdlID0gdmFyaWFibGUuZGF0YUJpbmRpbmcucGFnZSxcbiAgICAgICAgICAgIERFRkFVTFRfRFVSQVRJT04gPSAzMDAwO1xuICAgICAgICBsZXQgZHVyYXRpb24gPSBwYXJzZUludChvcHRpb25zLmR1cmF0aW9uIHx8IHZhcmlhYmxlLmRhdGFCaW5kaW5nLmR1cmF0aW9uLCBudWxsKSxcbiAgICAgICAgICAgIHRvYXN0ZXI7XG5cbiAgICAgICAgLy8gZHVyYXRpb25cbiAgICAgICAgaWYgKCFkdXJhdGlvbikge1xuICAgICAgICAgICAgZHVyYXRpb24gPSAoZHVyYXRpb24gIT09IDAgJiYgdHlwZSA9PT0gJ3N1Y2Nlc3MnKSA/IERFRkFVTFRfRFVSQVRJT04gOiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YXJpYWJsZS5kYXRhQmluZGluZy5jb250ZW50ICYmIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmNvbnRlbnQgPT09ICdwYWdlJyAmJiBwYXJ0aWFsUGFnZSkge1xuICAgICAgICAgICAgdG9hc3RlciA9IHRvYXN0ZXJTZXJ2aWNlLnNob3dDdXN0b20ocGFydGlhbFBhZ2UsIHtwb3NpdGlvbkNsYXNzOiBwb3NpdGlvbkNsYXNzLCB0aW1lT3V0OiBkdXJhdGlvbixcbiAgICAgICAgICAgICAgICBwYXJ0aWFsUGFyYW1zOiB2YXJpYWJsZS5fYmluZGRhdGFTZXQsIGNvbnRleHQ6IHZhcmlhYmxlLl9jb250ZXh0fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0b2FzdGVyID0gdG9hc3RlclNlcnZpY2Uuc2hvdyh0eXBlLCB0aXRsZSwgYm9keSB8fCBudWxsLCB7cG9zaXRpb25DbGFzczogcG9zaXRpb25DbGFzcywgdGltZU91dDogZHVyYXRpb24sIGVuYWJsZUh0bWw6IHRydWV9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNhbGxiYWNrc1xuICAgICAgICBpZiAodmFyaWFibGUub25DbGljaykge1xuICAgICAgICAgICAgdG9hc3Rlci5vblRhcC5zdWJzY3JpYmUoIHRoaXMub25Ub2FzdGVyQ2xpY2suYmluZCh0aGlzLCB2YXJpYWJsZSkgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFyaWFibGUub25IaWRlKSB7XG4gICAgICAgICAgICB0b2FzdGVyLm9uSGlkZGVuLnN1YnNjcmliZSggdGhpcy5vblRvYXN0ZXJIaWRlLmJpbmQodGhpcywgdmFyaWFibGUpICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERpYWxvZ0NvbmZpZyh2YXJpYWJsZSwgb3B0aW9ucywgZGlhbG9nSWQsIGNsb3NlQ2FsbEJhY2tGbikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgJ3RpdGxlJyA6IG9wdGlvbnMudGl0bGUgfHwgdmFyaWFibGUuZGF0YUJpbmRpbmcudGl0bGUsXG4gICAgICAgICAgICAndGV4dCcgOiBvcHRpb25zLm1lc3NhZ2UgfHwgdmFyaWFibGUuZGF0YUJpbmRpbmcudGV4dCxcbiAgICAgICAgICAgICdva0J1dHRvblRleHQnIDogb3B0aW9ucy5va0J1dHRvblRleHQgfHwgdmFyaWFibGUuZGF0YUJpbmRpbmcub2tCdXR0b25UZXh0IHx8ICdPSycsXG4gICAgICAgICAgICAnY2FuY2VsQnV0dG9uVGV4dCcgOiBvcHRpb25zLmNhbmNlbEJ1dHRvblRleHQgfHwgdmFyaWFibGUuZGF0YUJpbmRpbmcuY2FuY2VsQnV0dG9uVGV4dCB8fCAnQ0FOQ0VMJyxcbiAgICAgICAgICAgICdhbGVydHR5cGUnIDogb3B0aW9ucy5hbGVydHR5cGUgfHwgdmFyaWFibGUuZGF0YUJpbmRpbmcuYWxlcnR0eXBlIHx8ICdpbmZvcm1hdGlvbicsXG4gICAgICAgICAgICBvbk9rOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQ2xvc2UgdGhlIGFjdGlvbiBkaWFsb2cgYWZ0ZXIgdHJpZ2dlcmluZyBvbk9rIGNhbGxiYWNrIGV2ZW50XG4gICAgICAgICAgICAgICAgZGlhbG9nU2VydmljZS5jbG9zZShkaWFsb2dJZCwgdW5kZWZpbmVkLCBjbG9zZUNhbGxCYWNrRm4pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uQ2FuY2VsOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaW5pdGlhdGVDYWxsYmFjaygnb25DYW5jZWwnLCB2YXJpYWJsZSwgb3B0aW9ucy5kYXRhKTtcbiAgICAgICAgICAgICAgICAvLyBDbG9zZSB0aGUgYWN0aW9uIGRpYWxvZyBhZnRlciB0cmlnZ2VyaW5nIG9uQ2FuY2VsIGNhbGxiYWNrIGV2ZW50XG4gICAgICAgICAgICAgICAgZGlhbG9nU2VydmljZS5jbG9zZShkaWFsb2dJZCwgdW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaW5pdGlhdGVDYWxsYmFjaygnb25DbG9zZScsIHZhcmlhYmxlLCBvcHRpb25zLmRhdGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgbm90aWZ5VmlhRGlhbG9nKHZhcmlhYmxlLCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGlzUHJlZmFiVHlwZSA9IGdldFdtUHJvamVjdFByb3BlcnRpZXMoKS50eXBlID09PSAnUFJFRkFCJztcbiAgICAgICAgY29uc3QgZGlhbG9nUHJlZml4ID0gaXNQcmVmYWJUeXBlID8gJ1ByZWZhYicgOiAnQ29tbW9uJztcbiAgICAgICAgY29uc3QgZGlhbG9nSWQgPSBkaWFsb2dQcmVmaXggKyBjYXBpdGFsaXplKHZhcmlhYmxlLm9wZXJhdGlvbikgKyAnRGlhbG9nJztcbiAgICAgICAgY29uc3QgY2xvc2VDYWxsQmFja0ZuID0gKCkgPT4gaW5pdGlhdGVDYWxsYmFjaygnb25PaycsIHZhcmlhYmxlLCBvcHRpb25zLmRhdGEpO1xuXG5cbiAgICAgICAgbGV0IGRpYWxvZ0NvbmZpZzogYW55ID0gdGhpcy5nZXREaWFsb2dDb25maWcodmFyaWFibGUsIG9wdGlvbnMsIGRpYWxvZ0lkLCBjbG9zZUNhbGxCYWNrRm4pO1xuICAgICAgICBkaWFsb2dDb25maWcgPSBpc1ByZWZhYlR5cGUgPyBkaWFsb2dDb25maWcgOiB7IG5vdGlmaWNhdGlvbjogZGlhbG9nQ29uZmlnIH07XG4gICAgICAgIGRpYWxvZ1NlcnZpY2Uub3BlbihkaWFsb2dJZCwgdW5kZWZpbmVkLCBkaWFsb2dDb25maWcpO1xuICAgIH1cblxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogUFVCTElDICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy9cblxuICAgIG5vdGlmeSh2YXJpYWJsZSwgb3B0aW9ucywgc3VjY2VzcywgZXJyb3IpIHtcbiAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gdmFyaWFibGUub3BlcmF0aW9uO1xuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgICAgICBpZiAob3BlcmF0aW9uID09PSAndG9hc3QnKSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmeVZpYVRvYXN0ZXIodmFyaWFibGUsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub3RpZnlWaWFEaWFsb2codmFyaWFibGUsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0TWVzc2FnZSh2YXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUJpbmRpbmcudGV4dDtcbiAgICB9XG5cbiAgICBzZXRNZXNzYWdlKHZhcmlhYmxlLCB0ZXh0KSB7XG4gICAgICAgIGlmIChpc1N0cmluZyh0ZXh0KSkge1xuICAgICAgICAgICAgdmFyaWFibGUuZGF0YUJpbmRpbmcudGV4dCA9IHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmRhdGFCaW5kaW5nLnRleHQ7XG4gICAgfVxuXG4gICAgZ2V0T2tCdXR0b25UZXh0KHZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZS5kYXRhQmluZGluZy5va0J1dHRvblRleHQ7XG4gICAgfVxuICAgIHNldE9rQnV0dG9uVGV4dCh2YXJpYWJsZSwgdGV4dCkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodGV4dCkpIHtcbiAgICAgICAgICAgIHZhcmlhYmxlLmRhdGFCaW5kaW5nLm9rQnV0dG9uVGV4dCA9IHRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmRhdGFCaW5kaW5nLm9rQnV0dG9uVGV4dDtcbiAgICB9XG5cbiAgICBnZXRUb2FzdGVyRHVyYXRpb24odmFyaWFibGUpIHtcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmR1cmF0aW9uO1xuICAgIH1cblxuICAgIHNldFRvYXN0ZXJEdXJhdGlvbih2YXJpYWJsZSwgZHVyYXRpb24pIHtcbiAgICAgICAgdmFyaWFibGUuZGF0YUJpbmRpbmcuZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmR1cmF0aW9uO1xuICAgIH1cblxuICAgIGdldFRvYXN0ZXJDbGFzcyh2YXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUJpbmRpbmcuY2xhc3M7XG4gICAgfVxuXG4gICAgc2V0VG9hc3RlckNsYXNzKHZhcmlhYmxlLCB0eXBlKSB7XG4gICAgICAgIGlmIChpc1N0cmluZyh0eXBlKSkge1xuICAgICAgICAgICAgdmFyaWFibGUuZGF0YUJpbmRpbmcuY2xhc3MgPSB0eXBlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYWJsZS5kYXRhQmluZGluZy5jbGFzcztcbiAgICB9XG5cbiAgICBnZXRUb2FzdGVyUG9zaXRpb24odmFyaWFibGUpIHtcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmNsYXNzO1xuICAgIH1cblxuICAgIHNldFRvYXN0ZXJQb3NpdGlvbih2YXJpYWJsZSwgcG9zaXRpb24pIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHBvc2l0aW9uKSkge1xuICAgICAgICAgICAgdmFyaWFibGUuZGF0YUJpbmRpbmcucG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUJpbmRpbmcucG9zaXRpb247XG4gICAgfVxuXG4gICAgZ2V0QWxlcnRUeXBlKHZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZS5kYXRhQmluZGluZy5hbGVydHR5cGU7XG4gICAgfVxuXG4gICAgc2V0QWxlcnRUeXBlKHZhcmlhYmxlLCBhbGVydHR5cGUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKGFsZXJ0dHlwZSkpIHtcbiAgICAgICAgICAgIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmFsZXJ0dHlwZSA9IGFsZXJ0dHlwZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUJpbmRpbmcuYWxlcnR0eXBlO1xuICAgIH1cblxuICAgIGdldENhbmNlbEJ1dHRvblRleHQodmFyaWFibGUpIHtcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmNhbmNlbEJ1dHRvblRleHQ7XG4gICAgfVxuXG4gICAgc2V0Q2FuY2VsQnV0dG9uVGV4dCh2YXJpYWJsZSwgdGV4dCkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodGV4dCkpIHtcbiAgICAgICAgICAgIHZhcmlhYmxlLmRhdGFCaW5kaW5nLmNhbmNlbEJ1dHRvblRleHQgPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYWJsZS5kYXRhQmluZGluZy5jYW5jZWxCdXR0b25UZXh0O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -43,20 +43,7 @@ export class BaseVariableManager {
|
|
|
43
43
|
// send the notification manually to hide any context spinners on page.
|
|
44
44
|
// [TODO]: any spinners on widget listening on this variable will also go off. Need to see an approach to sovle that.
|
|
45
45
|
this.notifyInflight(variable, false, err);
|
|
46
|
-
|
|
47
|
-
const error401Subscription = err._401Subscriber.asObservable().subscribe(response => {
|
|
48
|
-
resolve(response);
|
|
49
|
-
// Unsubscribe after resolution
|
|
50
|
-
if (error401Subscription && !error401Subscription.closed) {
|
|
51
|
-
error401Subscription.unsubscribe();
|
|
52
|
-
}
|
|
53
|
-
}, e => {
|
|
54
|
-
reject(e);
|
|
55
|
-
// Unsubscribe after rejection
|
|
56
|
-
if (error401Subscription && !error401Subscription.closed) {
|
|
57
|
-
error401Subscription.unsubscribe();
|
|
58
|
-
}
|
|
59
|
-
});
|
|
46
|
+
err._401Subscriber.asObservable().subscribe(response => resolve(response), e => reject(e));
|
|
60
47
|
}
|
|
61
48
|
else {
|
|
62
49
|
reject(err);
|
|
@@ -78,4 +65,4 @@ export class BaseVariableManager {
|
|
|
78
65
|
return options;
|
|
79
66
|
}
|
|
80
67
|
}
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS12YXJpYWJsZS5tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFyaWFibGVzL3NyYy9tYW5hZ2VyL3ZhcmlhYmxlL2Jhc2UtdmFyaWFibGUubWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUVsRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRWpDLE1BQU0sT0FBZ0IsbUJBQW1CO0lBRXJDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsVUFBVyxFQUFFLFVBQVc7UUFDMUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsY0FBYyxDQUFDLFFBQVEsRUFBRSxNQUFlLEVBQUUsSUFBVSxFQUFFLE9BQWE7UUFDL0QsVUFBVSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBRTtZQUN2QyxRQUFRLEVBQUUsUUFBUTtZQUNsQixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxJQUFJO1lBQ1YsT0FBTyxFQUFFLE9BQU87U0FDbkIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLFFBQVEsRUFBRSxRQUFRO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLFFBQVEsRUFBRSxPQUFPLEVBQUUsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdkUsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqQixRQUFRLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztRQUM5QyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFFBQVEsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQVk7UUFDMUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuQyxRQUFRLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7Z0JBQ3ZHLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztvQkFDM0MsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QixDQUFDO1lBQ0wsQ0FBQyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxXQUFXLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDNUMsdUVBQXVFO29CQUN2RSxxSEFBcUg7b0JBQ3JILElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDMUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQ3ZDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUM3QixDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixDQUFDO3FCQUFNLENBQUM7b0JBQ0osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsc0JBQXNCLENBQUMsTUFBVyxFQUFFLFdBQWtCO1FBQ2xELElBQUksT0FBTyxHQUFvQixFQUFFLENBQUM7UUFDbEMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMzQixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHR0cFNlcnZpY2UsIHByb2Nlc3NCaW5kaW5nIH0gZnJvbSAnLi4vLi4vdXRpbC92YXJpYWJsZS92YXJpYWJsZXMudXRpbHMnO1xuaW1wb3J0IHsgYXBwTWFuYWdlcn0gZnJvbSAnLi8uLi8uLi91dGlsL3ZhcmlhYmxlL3ZhcmlhYmxlcy51dGlscyc7XG5pbXBvcnQgeyBBZHZhbmNlZE9wdGlvbnMgfSBmcm9tICcuLi8uLi9hZHZhbmNlZC1vcHRpb25zJztcbmltcG9ydCB7ZXh0ZW5kfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlVmFyaWFibGVNYW5hZ2VyIHtcblxuICAgIGluaXRCaW5kaW5nKHZhcmlhYmxlLCBiaW5kU291cmNlPywgYmluZFRhcmdldD8pIHtcbiAgICAgICAgcHJvY2Vzc0JpbmRpbmcodmFyaWFibGUsIHZhcmlhYmxlLl9jb250ZXh0LCBiaW5kU291cmNlLCBiaW5kVGFyZ2V0KTtcbiAgICB9XG5cbiAgICBub3RpZnlJbmZsaWdodCh2YXJpYWJsZSwgc3RhdHVzOiBib29sZWFuLCBkYXRhPzogYW55LCBvcHRpb25zPzogYW55KSB7XG4gICAgICAgIGFwcE1hbmFnZXIubm90aWZ5KCd0b2dnbGUtdmFyaWFibGUtc3RhdGUnLCB7XG4gICAgICAgICAgICB2YXJpYWJsZTogdmFyaWFibGUsXG4gICAgICAgICAgICBhY3RpdmU6IHN0YXR1cyxcbiAgICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIHZhcmlhYmxlIHBhcmFtZXRlciByZXF1ZXN0VHJhY2tJZCB0byBYLVdNLVJlcXVlc3QtVHJhY2stSWQgd2hpY2ggaXMgcmVjZWl2ZWQgaW4gdGhlIHJlc3BvbnNlIGhlYWRlcnMuXG4gICAgICogQHBhcmFtIHJlc3BvbnNlXG4gICAgICovXG4gICAgc2V0UmVxdWVzdFRyYWNrSWQocmVzcG9uc2UsIHZhcmlhYmxlKSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RUcmFja0lkID0gcmVzcG9uc2U/LmhlYWRlcnM/LmdldCgneC13bS1yZXF1ZXN0LXRyYWNrLWlkJyk7XG4gICAgICAgIGlmIChyZXF1ZXN0VHJhY2tJZCkge1xuICAgICAgICAgICAgdmFyaWFibGUuX3JlcXVlc3RUcmFja0lkID0gcmVxdWVzdFRyYWNrSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBtYWtlcyB0aGUgZmluYWwgYW5ndWxhciBodHRwIGNhbGwgdGhhdCByZXR1cm5zIGFuIG9ic2VydmFibGUuXG4gICAgICogV2UgYXR0YWNoIHRoaXMgb2JzZXJ2YWJsZSB0byB2YXJpYWJsZSB0byBjYW5jZWwgYSBuZXR3b3JrIGNhbGxcbiAgICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtc1xuICAgICAqIEBwYXJhbSB2YXJpYWJsZVxuICAgICAqIEBwYXJhbSBkYk9wZXJhdGlvblxuICAgICAqL1xuICAgIGh0dHBDYWxsKHJlcXVlc3RQYXJhbXMsIHZhcmlhYmxlLCBwYXJhbXM/OiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHZhcmlhYmxlLl9vYnNlcnZhYmxlID0gaHR0cFNlcnZpY2Uuc2VuZENhbGxBc09ic2VydmFibGUocmVxdWVzdFBhcmFtcywgcGFyYW1zKS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2UudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlcXVlc3RUcmFja0lkKHJlc3BvbnNlLCB2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVxdWVzdFRyYWNrSWQoZXJyLCB2YXJpYWJsZSk7XG4gICAgICAgICAgICAgICAgaWYgKGh0dHBTZXJ2aWNlLmlzUGxhdGZvcm1TZXNzaW9uVGltZW91dChlcnIpKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNlbmQgdGhlIG5vdGlmaWNhdGlvbiBtYW51YWxseSB0byBoaWRlIGFueSBjb250ZXh0IHNwaW5uZXJzIG9uIHBhZ2UuXG4gICAgICAgICAgICAgICAgICAgIC8vIFtUT0RPXTogYW55IHNwaW5uZXJzIG9uIHdpZGdldCBsaXN0ZW5pbmcgb24gdGhpcyB2YXJpYWJsZSB3aWxsIGFsc28gZ28gb2ZmLiBOZWVkIHRvIHNlZSBhbiBhcHByb2FjaCB0byBzb3ZsZSB0aGF0LlxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmeUluZmxpZ2h0KHZhcmlhYmxlLCBmYWxzZSwgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyLl80MDFTdWJzY3JpYmVyLmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0+IHJlc29sdmUocmVzcG9uc2UpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZSA9PiByZWplY3QoZSkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBwcmVwYXJlcyB0aGUgb3B0aW9ucyBwYXJhbWV0ZXIgZm9yIHZhcmlhYmxlIGNhbGxiYWNrcy5cbiAgICAgKiBAcGFyYW0geGhyT2JqLCBUaGUgeGhyT2JqIHRvIGJlIHBhc3NlZFxuICAgICAqIEBwYXJhbSBtb3JlT3B0aW9ucywgYW55IG90aGVyIGluZm8gdG8gYmUgcGFzc2VkIGluIHRoZSBvcHRpb25zIHBhcmFtXG4gICAgICovXG4gICAgcHJlcGFyZUNhbGxiYWNrT3B0aW9ucyh4aHJPYmo6IGFueSwgbW9yZU9wdGlvbnM/IDogYW55KTogQWR2YW5jZWRPcHRpb25zIHtcbiAgICAgICAgbGV0IG9wdGlvbnM6IEFkdmFuY2VkT3B0aW9ucyA9IHt9O1xuICAgICAgICBvcHRpb25zWyd4aHJPYmonXSA9IHhock9iajtcbiAgICAgICAgaWYgKG1vcmVPcHRpb25zKSB7XG4gICAgICAgICAgICBleHRlbmQob3B0aW9ucywgbW9yZU9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cbn1cbiJdfQ==
|