@wavemaker/app-ng-runtime 12.0.0-next.45503 → 12.0.0-next.46502
Sign up to get free protection for your applications and to get access to all the features.
- app-ng-runtime/build-task/bundles/index.umd.js +53 -45
- app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
- app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/containers/accordion/accordion-pane/accordion-pane.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/containers/wizard/wizard.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +4 -4
- app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/chips/chips.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +6 -2
- app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
- app-ng-runtime/build-task/fesm2022/index.mjs +53 -45
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +8 -7
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +1 -6
- app-ng-runtime/components/base/fesm2022/index.mjs +8 -7
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
- app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +3 -0
- app-ng-runtime/components/basic/default/bundles/index.umd.js +39 -19
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +14 -6
- app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
- app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +8 -4
- app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +39 -19
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
- app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -0
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +17 -9
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +9 -5
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +17 -9
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -0
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/bundles/index.umd.js +16 -9
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +19 -13
- app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +16 -9
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/search.component.d.ts +4 -2
- app-ng-runtime/components/chart/bundles/index.umd.js +1 -0
- app-ng-runtime/components/chart/esm2022/chart.utils.mjs +2 -1
- app-ng-runtime/components/chart/fesm2022/index.mjs +1 -0
- app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -0
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +15 -9
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +13 -10
- app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +4 -1
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +15 -9
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js +6 -6
- app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +7 -7
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +6 -6
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/bundles/index.umd.js +4 -0
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +5 -1
- app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -0
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +1 -0
- app-ng-runtime/components/data/list/bundles/index.umd.js +19 -11
- app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +10 -1
- app-ng-runtime/components/data/list/esm2022/list.component.mjs +12 -12
- app-ng-runtime/components/data/list/fesm2022/index.mjs +20 -12
- app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +44 -10
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +30 -7
- app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
- app-ng-runtime/components/data/table/fesm2022/index.mjs +45 -11
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table.component.d.ts +8 -1
- app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +9 -3
- app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +2 -1
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +9 -3
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
- app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +25 -7
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +25 -8
- app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +25 -7
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
- app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
- app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
- app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +184 -105
- app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
- app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
- app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +3 -3
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
- app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +20 -18
- app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
- app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +66 -13
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +6 -6
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +184 -105
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/select/select.component.d.ts +2 -0
- app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
- app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
- app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -1
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +28 -21
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
- app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +10 -6
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +8 -8
- app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +9 -9
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
- app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +25 -18
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +224 -121
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +220 -123
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +7 -1
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +225 -122
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +18 -11
- app-ng-runtime/components/input/rating/bundles/index.umd.js +2 -2
- app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +3 -3
- app-ng-runtime/components/input/rating/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
- app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
- app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +6 -6
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +7 -7
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +6 -6
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +8 -6
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +8 -7
- app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +8 -6
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
- app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
- app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
- app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +15 -13
- app-ng-runtime/core/esm2022/public_api.mjs +2 -2
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
- app-ng-runtime/core/esm2022/utils/utils.mjs +4 -5
- app-ng-runtime/core/fesm2022/index.mjs +11 -11
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +1 -1
- app-ng-runtime/core/utils/utils.d.ts +1 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +6 -4
- app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
- app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
- app-ng-runtime/runtime/base/fesm2022/index.mjs +6 -4
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
- app-ng-runtime/scripts/datatable/datatable.js +33 -32
- app-ng-runtime/variables/bundles/index.umd.js +34 -16
- app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +35 -17
- app-ng-runtime/variables/fesm2022/index.mjs +34 -16
- app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/manager/variable/web-socket-variable.manager.d.ts +0 -4
@@ -1,10 +1,11 @@
|
|
1
1
|
import { Observable } from 'rxjs';
|
2
|
+
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
|
2
3
|
import * as i0 from "@angular/core";
|
3
4
|
export interface CanComponentDeactivate {
|
4
5
|
canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;
|
5
6
|
}
|
6
7
|
export declare class CanDeactivatePageGuard {
|
7
|
-
canDeactivate(component: CanComponentDeactivate): any;
|
8
|
+
canDeactivate(component: CanComponentDeactivate, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): any;
|
8
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<CanDeactivatePageGuard, never>;
|
9
10
|
static ɵprov: i0.ɵɵInjectableDeclaration<CanDeactivatePageGuard>;
|
10
11
|
}
|
@@ -21,6 +21,7 @@ $.widget('wm.datatable', {
|
|
21
21
|
filtermode: '',
|
22
22
|
filteronkeypress: false,
|
23
23
|
activeRow: undefined,
|
24
|
+
isrowselectable: false,
|
24
25
|
height: '100%',
|
25
26
|
showHeader: true,
|
26
27
|
selectFirstRow: false,
|
@@ -319,7 +320,10 @@ $.widget('wm.datatable', {
|
|
319
320
|
$th.attr({
|
320
321
|
'data-col-id': id,
|
321
322
|
'data-col-field': field,
|
322
|
-
'title': titleLabel
|
323
|
+
'title': titleLabel,
|
324
|
+
'tabindex': 0,
|
325
|
+
'scope': 'col',
|
326
|
+
'role':'columnheader'
|
323
327
|
});
|
324
328
|
self._setStyles($th, 'text-align: ' + value.textAlignment)
|
325
329
|
$th.addClass(headerClasses);
|
@@ -358,7 +362,8 @@ $.widget('wm.datatable', {
|
|
358
362
|
$groupTl.attr({
|
359
363
|
'data-col-group': col.field,
|
360
364
|
'class': classes,
|
361
|
-
'title': col.displayName
|
365
|
+
'title': col.displayName,
|
366
|
+
'tabindex': 0
|
362
367
|
});
|
363
368
|
self._setStyles($groupTl, styles);
|
364
369
|
$groupTl.append('<span class="header-data">' + col.displayName + '</span>');
|
@@ -661,7 +666,7 @@ $.widget('wm.datatable', {
|
|
661
666
|
colExpression = colDef.customExpression,
|
662
667
|
styles = "text-align: " + colDef.textAlignment + ";position: relative;"
|
663
668
|
|
664
|
-
$htm = $('<td class="' + classes + '" data-col-id="' + colId + '" role="cell"></td>');
|
669
|
+
$htm = $('<td class="' + classes + '" data-col-id="' + colId + '" role="cell" tabindex="0"></td>');
|
665
670
|
this._setStyles($htm, styles);
|
666
671
|
|
667
672
|
columnValue = _.get(row, colDef.field);
|
@@ -722,7 +727,7 @@ $.widget('wm.datatable', {
|
|
722
727
|
}
|
723
728
|
}
|
724
729
|
row.$index = rowIndex + 1;
|
725
|
-
this.options.registerColNgClassWatcher(row, colDef, rowIndex, colId);
|
730
|
+
this.options.registerColNgClassWatcher(row, colDef, rowIndex, colId, summaryRow);
|
726
731
|
return $htm;
|
727
732
|
},
|
728
733
|
//Get event related template for editable widget
|
@@ -1501,6 +1506,7 @@ $.widget('wm.datatable', {
|
|
1501
1506
|
}
|
1502
1507
|
case 'multiselect': // Fallthrough
|
1503
1508
|
case 'showRadioColumn':
|
1509
|
+
case 'isrowselectable' :
|
1504
1510
|
case 'rowActions':
|
1505
1511
|
case 'filterNullRecords':
|
1506
1512
|
case 'showRowIndex':
|
@@ -1664,8 +1670,16 @@ $.widget('wm.datatable', {
|
|
1664
1670
|
// triggered on capture phase of click listener.
|
1665
1671
|
// sets the selected rowdata on click.
|
1666
1672
|
rowClickHandlerOnCapture: function (e, $row, options) {
|
1667
|
-
|
1668
|
-
|
1673
|
+
// If 'isrowselectable' property is enabled, clicking anywhere on the row will trigger its selection. Otherwise, the row will not be selected on click.
|
1674
|
+
// Also this flag works if mutliselect or radioselect is enabled.
|
1675
|
+
// In quick edit mode, clicking any part of the row switches it to edit mode, regardless of the flag setting.
|
1676
|
+
if (this.options.editmode !== this.CONSTANTS.QUICK_EDIT) {
|
1677
|
+
if ((this.options.multiselect || this.options.showRadioColumn) && !this.options.isrowselectable) {
|
1678
|
+
if (Number(this.getColInfo(e))) {
|
1679
|
+
e.stopPropagation();
|
1680
|
+
return;
|
1681
|
+
}
|
1682
|
+
}
|
1669
1683
|
}
|
1670
1684
|
$row = $row || $(e.target).closest('tr.app-datagrid-row');
|
1671
1685
|
var gridRow = this.gridElement.find($row);
|
@@ -1680,8 +1694,16 @@ $.widget('wm.datatable', {
|
|
1680
1694
|
|
1681
1695
|
/* Handles row selection. */
|
1682
1696
|
rowSelectionHandler: function (e, $row, options) {
|
1683
|
-
|
1684
|
-
|
1697
|
+
// If 'isrowselectable' property is enabled, clicking anywhere on the row will trigger its selection. Otherwise, the row will not be selected on click.
|
1698
|
+
// Also this flag works if mutliselect or radioselect is enabled.
|
1699
|
+
// In quick edit mode, clicking any part of the row switches it to edit mode, regardless of the flag setting.
|
1700
|
+
if (this.options.editmode !== this.CONSTANTS.QUICK_EDIT) {
|
1701
|
+
if ((this.options.multiselect || this.options.showRadioColumn) && !this.options.isrowselectable) {
|
1702
|
+
if (Number(this.getColInfo(e))) {
|
1703
|
+
e.stopPropagation();
|
1704
|
+
return;
|
1705
|
+
}
|
1706
|
+
}
|
1685
1707
|
}
|
1686
1708
|
options = options || {};
|
1687
1709
|
var rowId,
|
@@ -2694,14 +2716,9 @@ $.widget('wm.datatable', {
|
|
2694
2716
|
return false;
|
2695
2717
|
},
|
2696
2718
|
getColInfo: function(event) {
|
2697
|
-
var row = $(event.target).closest('tr.app-datagrid-row');
|
2698
|
-
var rowId = row.attr('data-row-id');
|
2699
2719
|
var column = $(event.target).closest('td.app-datagrid-cell');
|
2700
2720
|
var colId = column.attr('data-col-id');
|
2701
|
-
|
2702
|
-
return this.columnClickInfo[rowId][colId];
|
2703
|
-
}
|
2704
|
-
return false;
|
2721
|
+
return colId;
|
2705
2722
|
},
|
2706
2723
|
/* Attaches all event handlers for the table. */
|
2707
2724
|
attachEventHandlers: function ($htm) {
|
@@ -2715,22 +2732,6 @@ $.widget('wm.datatable', {
|
|
2715
2732
|
// add js click handler for capture phase in order to first listen on grid and
|
2716
2733
|
// assign selectedItems so that any child actions can have access to the selectedItems.
|
2717
2734
|
$htm.on('click', this.rowSelectionHandler.bind(this));
|
2718
|
-
$htm.on("click", "td *", function(event) {
|
2719
|
-
|
2720
|
-
// Prevent propagation to parent elements
|
2721
|
-
if(event.target.type != 'checkbox'){
|
2722
|
-
var row = $(event.target).closest('tr.app-datagrid-row');
|
2723
|
-
var rowId = row.attr('data-row-id');
|
2724
|
-
var column = $(event.target).closest('td.app-datagrid-cell');
|
2725
|
-
var colId = column.attr('data-col-id');
|
2726
|
-
var id = Number(colId);
|
2727
|
-
var colDefination = self.preparedHeaderData[id];
|
2728
|
-
if (colDefination && colDefination.readonly && colDefination.field !== 'rowOperations') {
|
2729
|
-
self.columnClickInfo[rowId] = {};
|
2730
|
-
self.columnClickInfo[rowId][colId] = true;
|
2731
|
-
}
|
2732
|
-
}
|
2733
|
-
});
|
2734
2735
|
$htm.on('dblclick', this.rowDblClickHandler.bind(this));
|
2735
2736
|
$htm.on('keydown', this.onKeyDown.bind(this));
|
2736
2737
|
}
|
@@ -3244,8 +3245,8 @@ $.widget('wm.datatable', {
|
|
3244
3245
|
'<div class="app-grid-header">' +
|
3245
3246
|
'<div class="app-grid-header-inner">' +
|
3246
3247
|
'<table tabindex="0" class="' + this.options.cssClassNames.gridDefault + ' ' + this.options.cssClassNames.grid + '">' +
|
3247
|
-
'<thead
|
3248
|
-
'</thead><tbody class="app-grid-content app-datagrid-body" id="table_' + this.tableId + '">' +
|
3248
|
+
'<thead class="table-header thead-sticky" id="table_header_' + this.tableId + '" role="rowgroup">' +
|
3249
|
+
'</thead><tbody class="app-grid-content app-datagrid-body" id="table_' + this.tableId + '" role="rowgroup">' +
|
3249
3250
|
'</tbody></table>' +
|
3250
3251
|
'</div></div></div>',
|
3251
3252
|
$statusContainer = $(statusContainer),
|
@@ -2449,9 +2449,10 @@
|
|
2449
2449
|
*/
|
2450
2450
|
getURL(variable) {
|
2451
2451
|
const prefabName = variable.getPrefabName();
|
2452
|
-
const opInfo = prefabName ?
|
2452
|
+
const opInfo = prefabName ?
|
2453
|
+
lodashEs.get(exports.metadataService.getByOperationId(variable.operationId, prefabName), 'wmServiceOperationInfo') :
|
2454
|
+
lodashEs.get(exports.metadataService.getByOperationId(variable.operationId), 'wmServiceOperationInfo');
|
2453
2455
|
const inputFields = variable.dataBinding;
|
2454
|
-
let config;
|
2455
2456
|
// add sample values to the params (url and path)
|
2456
2457
|
lodashEs.forEach(opInfo.parameters, function (param) {
|
2457
2458
|
param.sampleValue = inputFields[param.name];
|
@@ -2461,7 +2462,7 @@
|
|
2461
2462
|
skipCloakHeaders: true
|
2462
2463
|
});
|
2463
2464
|
// call common method to prepare config for the service operation info.
|
2464
|
-
config = ServiceVariableUtils.constructRequestParams(variable, opInfo, inputFields);
|
2465
|
+
const config = ServiceVariableUtils.constructRequestParams(variable, opInfo, inputFields);
|
2465
2466
|
/* if error found, return */
|
2466
2467
|
if (config.error && config.error.message) {
|
2467
2468
|
this._onSocketError(variable, { data: config.error.message });
|
@@ -2479,10 +2480,10 @@
|
|
2479
2480
|
* @private
|
2480
2481
|
*/
|
2481
2482
|
_onSocketMessage(variable, evt) {
|
2482
|
-
let data = lodashEs.get(evt, 'data'),
|
2483
|
+
let data = lodashEs.get(evt, 'data'), dataLength, dataLimit, shouldAddToLast, insertIdx;
|
2483
2484
|
data = i1.getValidJSON(data) || i1.xmlToJson(data) || data;
|
2484
2485
|
// EVENT: ON_MESSAGE
|
2485
|
-
value = initiateCallback(VARIABLE_CONSTANTS.EVENT.MESSAGE_RECEIVE, variable, data, evt);
|
2486
|
+
const value = initiateCallback(VARIABLE_CONSTANTS.EVENT.MESSAGE_RECEIVE, variable, data, evt);
|
2486
2487
|
data = i1.isDefined(value) ? value : data;
|
2487
2488
|
if (this.shouldAppendData(variable)) {
|
2488
2489
|
variable.dataSet = variable.dataSet || [];
|
@@ -2549,11 +2550,16 @@
|
|
2549
2550
|
variable._socketConnected = true;
|
2550
2551
|
// EVENT: ON_OPEN
|
2551
2552
|
initiateCallback(VARIABLE_CONSTANTS.EVENT.OPEN, variable, lodashEs.get(evt, 'data'), evt);
|
2553
|
+
// Send initial request body if it exists and connectOnPageLoad is true
|
2554
|
+
if (variable.startUpdate) {
|
2555
|
+
const requestBody = lodashEs.get(variable, 'dataBinding.RequestBody');
|
2556
|
+
if (requestBody) {
|
2557
|
+
setTimeout(() => {
|
2558
|
+
this.send(variable, requestBody);
|
2559
|
+
}, 0); // Using setTimeout to ensure connection is fully established
|
2560
|
+
}
|
2561
|
+
}
|
2552
2562
|
}
|
2553
|
-
/**
|
2554
|
-
* clears the socket variable against the variable in a scope
|
2555
|
-
* @param variable
|
2556
|
-
*/
|
2557
2563
|
freeSocket(variable) {
|
2558
2564
|
this.scope_var_socket_map.set(variable, undefined);
|
2559
2565
|
}
|
@@ -2595,7 +2601,6 @@
|
|
2595
2601
|
if (_socket) {
|
2596
2602
|
return _socket;
|
2597
2603
|
}
|
2598
|
-
// Trigger error if unsecured webSocket is used in secured domain, ignore in mobile device
|
2599
2604
|
if (!CONSTANTS.hasCordova && i1.isInsecureContentRequest(url)) {
|
2600
2605
|
i1.triggerFn(this._onSocketError.bind(this, variable));
|
2601
2606
|
return;
|
@@ -2616,12 +2621,11 @@
|
|
2616
2621
|
*/
|
2617
2622
|
open(variable, success, error) {
|
2618
2623
|
const shouldOpen = this._onBeforeSocketOpen(variable);
|
2619
|
-
let socket;
|
2620
2624
|
if (shouldOpen === false) {
|
2621
2625
|
i1.triggerFn(error);
|
2622
2626
|
return;
|
2623
2627
|
}
|
2624
|
-
socket = this.getSocket(variable);
|
2628
|
+
const socket = this.getSocket(variable);
|
2625
2629
|
i1.triggerFn(success);
|
2626
2630
|
return socket;
|
2627
2631
|
}
|
@@ -2629,7 +2633,8 @@
|
|
2629
2633
|
* closes an existing socket connection on variable
|
2630
2634
|
*/
|
2631
2635
|
close(variable) {
|
2632
|
-
const shouldClose = this._onBeforeSocketClose(variable)
|
2636
|
+
const shouldClose = this._onBeforeSocketClose(variable);
|
2637
|
+
const socket = this.getSocket(variable);
|
2633
2638
|
if (shouldClose === false) {
|
2634
2639
|
return;
|
2635
2640
|
}
|
@@ -2643,15 +2648,28 @@
|
|
2643
2648
|
*/
|
2644
2649
|
send(variable, message) {
|
2645
2650
|
const socket = this.getSocket(variable);
|
2646
|
-
|
2651
|
+
if (!socket) {
|
2652
|
+
console.error('WebSocket connection not established');
|
2653
|
+
return;
|
2654
|
+
}
|
2647
2655
|
message = message || lodashEs.get(variable, 'dataBinding.RequestBody');
|
2648
|
-
|
2656
|
+
if (!message) {
|
2657
|
+
console.warn('No message to send');
|
2658
|
+
return;
|
2659
|
+
}
|
2660
|
+
const response = this._onBeforeSend(variable, message);
|
2649
2661
|
if (response === false) {
|
2650
2662
|
return;
|
2651
2663
|
}
|
2652
2664
|
message = i1.isDefined(response) ? response : message;
|
2653
2665
|
message = i1.isObject(message) ? JSON.stringify(message) : message;
|
2654
|
-
|
2666
|
+
try {
|
2667
|
+
socket.send(message, 0);
|
2668
|
+
}
|
2669
|
+
catch (error) {
|
2670
|
+
console.error('Error sending message:', error);
|
2671
|
+
this._onSocketError(variable, { data: error.message });
|
2672
|
+
}
|
2655
2673
|
}
|
2656
2674
|
}
|
2657
2675
|
|
@@ -53,9 +53,10 @@ export class WebSocketVariableManager extends BaseVariableManager {
|
|
53
53
|
*/
|
54
54
|
getURL(variable) {
|
55
55
|
const prefabName = variable.getPrefabName();
|
56
|
-
const opInfo = prefabName ?
|
56
|
+
const opInfo = prefabName ?
|
57
|
+
get(metadataService.getByOperationId(variable.operationId, prefabName), 'wmServiceOperationInfo') :
|
58
|
+
get(metadataService.getByOperationId(variable.operationId), 'wmServiceOperationInfo');
|
57
59
|
const inputFields = variable.dataBinding;
|
58
|
-
let config;
|
59
60
|
// add sample values to the params (url and path)
|
60
61
|
forEach(opInfo.parameters, function (param) {
|
61
62
|
param.sampleValue = inputFields[param.name];
|
@@ -65,7 +66,7 @@ export class WebSocketVariableManager extends BaseVariableManager {
|
|
65
66
|
skipCloakHeaders: true
|
66
67
|
});
|
67
68
|
// call common method to prepare config for the service operation info.
|
68
|
-
config = ServiceVariableUtils.constructRequestParams(variable, opInfo, inputFields);
|
69
|
+
const config = ServiceVariableUtils.constructRequestParams(variable, opInfo, inputFields);
|
69
70
|
/* if error found, return */
|
70
71
|
if (config.error && config.error.message) {
|
71
72
|
this._onSocketError(variable, { data: config.error.message });
|
@@ -83,10 +84,10 @@ export class WebSocketVariableManager extends BaseVariableManager {
|
|
83
84
|
* @private
|
84
85
|
*/
|
85
86
|
_onSocketMessage(variable, evt) {
|
86
|
-
let data = get(evt, 'data'),
|
87
|
+
let data = get(evt, 'data'), dataLength, dataLimit, shouldAddToLast, insertIdx;
|
87
88
|
data = getValidJSON(data) || xmlToJson(data) || data;
|
88
89
|
// EVENT: ON_MESSAGE
|
89
|
-
value = initiateCallback(VARIABLE_CONSTANTS.EVENT.MESSAGE_RECEIVE, variable, data, evt);
|
90
|
+
const value = initiateCallback(VARIABLE_CONSTANTS.EVENT.MESSAGE_RECEIVE, variable, data, evt);
|
90
91
|
data = isDefined(value) ? value : data;
|
91
92
|
if (this.shouldAppendData(variable)) {
|
92
93
|
variable.dataSet = variable.dataSet || [];
|
@@ -153,11 +154,16 @@ export class WebSocketVariableManager extends BaseVariableManager {
|
|
153
154
|
variable._socketConnected = true;
|
154
155
|
// EVENT: ON_OPEN
|
155
156
|
initiateCallback(VARIABLE_CONSTANTS.EVENT.OPEN, variable, get(evt, 'data'), evt);
|
157
|
+
// Send initial request body if it exists and connectOnPageLoad is true
|
158
|
+
if (variable.startUpdate) {
|
159
|
+
const requestBody = get(variable, 'dataBinding.RequestBody');
|
160
|
+
if (requestBody) {
|
161
|
+
setTimeout(() => {
|
162
|
+
this.send(variable, requestBody);
|
163
|
+
}, 0); // Using setTimeout to ensure connection is fully established
|
164
|
+
}
|
165
|
+
}
|
156
166
|
}
|
157
|
-
/**
|
158
|
-
* clears the socket variable against the variable in a scope
|
159
|
-
* @param variable
|
160
|
-
*/
|
161
167
|
freeSocket(variable) {
|
162
168
|
this.scope_var_socket_map.set(variable, undefined);
|
163
169
|
}
|
@@ -199,7 +205,6 @@ export class WebSocketVariableManager extends BaseVariableManager {
|
|
199
205
|
if (_socket) {
|
200
206
|
return _socket;
|
201
207
|
}
|
202
|
-
// Trigger error if unsecured webSocket is used in secured domain, ignore in mobile device
|
203
208
|
if (!CONSTANTS.hasCordova && isInsecureContentRequest(url)) {
|
204
209
|
triggerFn(this._onSocketError.bind(this, variable));
|
205
210
|
return;
|
@@ -220,12 +225,11 @@ export class WebSocketVariableManager extends BaseVariableManager {
|
|
220
225
|
*/
|
221
226
|
open(variable, success, error) {
|
222
227
|
const shouldOpen = this._onBeforeSocketOpen(variable);
|
223
|
-
let socket;
|
224
228
|
if (shouldOpen === false) {
|
225
229
|
triggerFn(error);
|
226
230
|
return;
|
227
231
|
}
|
228
|
-
socket = this.getSocket(variable);
|
232
|
+
const socket = this.getSocket(variable);
|
229
233
|
triggerFn(success);
|
230
234
|
return socket;
|
231
235
|
}
|
@@ -233,7 +237,8 @@ export class WebSocketVariableManager extends BaseVariableManager {
|
|
233
237
|
* closes an existing socket connection on variable
|
234
238
|
*/
|
235
239
|
close(variable) {
|
236
|
-
const shouldClose = this._onBeforeSocketClose(variable)
|
240
|
+
const shouldClose = this._onBeforeSocketClose(variable);
|
241
|
+
const socket = this.getSocket(variable);
|
237
242
|
if (shouldClose === false) {
|
238
243
|
return;
|
239
244
|
}
|
@@ -247,15 +252,28 @@ export class WebSocketVariableManager extends BaseVariableManager {
|
|
247
252
|
*/
|
248
253
|
send(variable, message) {
|
249
254
|
const socket = this.getSocket(variable);
|
250
|
-
|
255
|
+
if (!socket) {
|
256
|
+
console.error('WebSocket connection not established');
|
257
|
+
return;
|
258
|
+
}
|
251
259
|
message = message || get(variable, 'dataBinding.RequestBody');
|
252
|
-
|
260
|
+
if (!message) {
|
261
|
+
console.warn('No message to send');
|
262
|
+
return;
|
263
|
+
}
|
264
|
+
const response = this._onBeforeSend(variable, message);
|
253
265
|
if (response === false) {
|
254
266
|
return;
|
255
267
|
}
|
256
268
|
message = isDefined(response) ? response : message;
|
257
269
|
message = isObject(message) ? JSON.stringify(message) : message;
|
258
|
-
|
270
|
+
try {
|
271
|
+
socket.send(message, 0);
|
272
|
+
}
|
273
|
+
catch (error) {
|
274
|
+
console.error('Error sending message:', error);
|
275
|
+
this._onSocketError(variable, { data: error.message });
|
276
|
+
}
|
259
277
|
}
|
260
278
|
}
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXNvY2tldC12YXJpYWJsZS5tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFyaWFibGVzL3NyYy9tYW5hZ2VyL3ZhcmlhYmxlL3dlYi1zb2NrZXQtdmFyaWFibGUubWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFN0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV2QyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsbUJBQW1CO0lBQWpFOztRQUVJLHlCQUFvQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDakMsYUFBUSxHQUFHO1lBQ1AsU0FBUyxFQUFFLFNBQVM7WUFDcEIsc0JBQXNCLEVBQUUsb0JBQW9CO1lBQzVDLFlBQVksRUFBRSxXQUFXO1NBQzVCLENBQUM7UUFDRix5QkFBb0IsR0FBRztZQUNuQixTQUFTLEVBQUUsU0FBUztZQUNwQixTQUFTLEVBQUUsU0FBUztZQUNwQixRQUFRLEVBQUUsUUFBUTtTQUNyQixDQUFDO0lBa1FOLENBQUM7SUFoUUc7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUFDLFFBQVE7UUFDN0IsUUFBUSxH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RyxPQUFPLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBQzlELFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNqRCxJQUFJLFFBQVEsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNyQixPQUFPO1FBQ1gsQ0FBQztRQUNELE9BQU8sR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ25ELE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNoRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyAkV2ViU29ja2V0IH0gZnJvbSAnYW5ndWxhcjItd2Vic29ja2V0L2FuZ3VsYXIyLXdlYnNvY2tldCc7XG5cbmltcG9ydCB7IGdldFZhbGlkSlNPTiwgaXNEZWZpbmVkLCBpc0luc2VjdXJlQ29udGVudFJlcXVlc3QsIGlzT2JqZWN0LCB0cmlnZ2VyRm4sIHhtbFRvSnNvbiB9IGZyb20gJ0B3bS9jb3JlJztcblxuaW1wb3J0IHsgQmFzZVZhcmlhYmxlTWFuYWdlciB9IGZyb20gJy4vYmFzZS12YXJpYWJsZS5tYW5hZ2VyJztcbmltcG9ydCB7IFdlYlNvY2tldFZhcmlhYmxlIH0gZnJvbSAnLi4vLi4vbW9kZWwvdmFyaWFibGUvd2ViLXNvY2tldC12YXJpYWJsZSc7XG5pbXBvcnQgeyBpbml0aWF0ZUNhbGxiYWNrLCBtZXRhZGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlsL3ZhcmlhYmxlL3ZhcmlhYmxlcy51dGlscyc7XG5pbXBvcnQgeyBDT05TVEFOVFMsIFZBUklBQkxFX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy92YXJpYWJsZXMuY29uc3RhbnRzJztcbmltcG9ydCB7IFNlcnZpY2VWYXJpYWJsZVV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbC92YXJpYWJsZS9zZXJ2aWNlLXZhcmlhYmxlLnV0aWxzJztcbmltcG9ydCB7Zm9yRWFjaCwgZ2V0fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBjbGFzcyBXZWJTb2NrZXRWYXJpYWJsZU1hbmFnZXIgZXh0ZW5kcyBCYXNlVmFyaWFibGVNYW5hZ2VyIHtcblxuICAgIHNjb3BlX3Zhcl9zb2NrZXRfbWFwID0gbmV3IE1hcCgpO1xuICAgIFBST1BFUlRZID0ge1xuICAgICAgICAnU0VSVklDRSc6ICdzZXJ2aWNlJyxcbiAgICAgICAgJ0RBVEFfVVBEQVRFX1NUUkFURUdZJzogJ2RhdGFVcGRhdGVTdHJhdGVneScsXG4gICAgICAgICdEQVRBX0xJTUlUJzogJ2RhdGFMaW1pdCdcbiAgICB9O1xuICAgIERBVEFfVVBEQVRFX1NUUkFURUdZID0ge1xuICAgICAgICAnUkVGUkVTSCc6ICdyZWZyZXNoJyxcbiAgICAgICAgJ1BSRVBFTkQnOiAncHJlcGVuZCcsXG4gICAgICAgICdBUFBFTkQnOiAnYXBwZW5kJ1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHRoZSBzdGF0ZSBvZiBwcm9wZXJ0eSB0byBkZWNpZGUgd2VhdGhlciB0byBhcHBlbmQgbmV3IG1lc3NhZ2VzIHRvIGRhdGFTZXQgb3Igbm90XG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHJldHVybnMgYm9vbGVhblxuICAgICAqL1xuICAgIHByaXZhdGUgc2hvdWxkQXBwZW5kRGF0YSh2YXJpYWJsZSkge1xuICAgICAgICB2YXJpYWJsZSA9IHZhcmlhYmxlIHx8IHRoaXM7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZVt0aGlzLlBST1BFUlRZLkRBVEFfVVBEQVRFX1NUUkFURUdZXSAhPT0gdGhpcy5EQVRBX1VQREFURV9TVFJBVEVHWS5SRUZSRVNIO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgdGhlIHN0YXRlIG9mIHByb3BlcnR5IHRvIGRlY2lkZSB3ZWF0aGVyIHRvIEFQUEVORCBvciBQUkVQRU5EIG5ldyBtZXNzYWdlcyB0byBkYXRhU2V0XG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHJldHVybnMgYm9vbGVhblxuICAgICAqL1xuICAgIHByaXZhdGUgc2hvdWxkQXBwZW5kTGFzdCh2YXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdmFyaWFibGVbdGhpcy5QUk9QRVJUWS5EQVRBX1VQREFURV9TVFJBVEVHWV0gPT09IHRoaXMuREFUQV9VUERBVEVfU1RSQVRFR1kuQVBQRU5EO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgdXBwZXIgbGltaXQgb24gbnVtYmVyIG9mIHJlY29yZHMgdG8gYmUgaW4gZGF0YVNldFxuICAgICAqIHRoaXMgaXMgYXBwbGljYWJsZSBvbmx5IHdoZW4gYXBwZW5kRGF0YSBpcyB0cnVlXG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHJldHVybnMge2RhdGFMaW1pdH1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldERhdGFMaW1pdCh2YXJpYWJsZSkge1xuICAgICAgICByZXR1cm4gdmFyaWFibGUuZGF0YUxpbWl0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldCB1cmwgZnJvbSB3bVNlcnZpY2VPcGVyYXRpb25JbmZvXG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHJldHVybnMgeyp9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRVUkwodmFyaWFibGUpIHtcbiAgICAgICAgY29uc3QgcHJlZmFiTmFtZSA9IHZhcmlhYmxlLmdldFByZWZhYk5hbWUoKTtcbiAgICAgICAgY29uc3Qgb3BJbmZvID0gcHJlZmFiTmFtZSA/IGdldChtZXRhZGF0YVNlcnZpY2UuZ2V0QnlPcGVyYXRpb25JZCh2YXJpYWJsZS5vcGVyYXRpb25JZCwgcHJlZmFiTmFtZSksICd3bVNlcnZpY2VPcGVyYXRpb25JbmZvJykgOiBnZXQobWV0YWRhdGFTZXJ2aWNlLmdldEJ5T3BlcmF0aW9uSWQodmFyaWFibGUub3BlcmF0aW9uSWQpLCAnd21TZXJ2aWNlT3BlcmF0aW9uSW5mbycpO1xuICAgICAgICBjb25zdCBpbnB1dEZpZWxkcyA9IHZhcmlhYmxlLmRhdGFCaW5kaW5nO1xuICAgICAgICBsZXQgY29uZmlnO1xuXG4gICAgICAgIC8vIGFkZCBzYW1wbGUgdmFsdWVzIHRvIHRoZSBwYXJhbXMgKHVybCBhbmQgcGF0aClcbiAgICAgICAgZm9yRWFjaChvcEluZm8ucGFyYW1ldGVycywgZnVuY3Rpb24gKHBhcmFtKSB7XG4gICAgICAgICAgICBwYXJhbS5zYW1wbGVWYWx1ZSA9IGlucHV0RmllbGRzW3BhcmFtLm5hbWVdO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gYWx0aG91Z2gsIG5vIGhlYWRlciBwYXJhbXMgd2lsbCBiZSBwcmVzZW50LCBrZWVwaW5nICdza2lwQ2xvYWtIZWFkZXJzJyBmbGFnIGlmIHN1cHBvcnQgcHJvdmlkZWQgbGF0ZXJcbiAgICAgICAgJC5leHRlbmQob3BJbmZvLCB7XG4gICAgICAgICAgICBza2lwQ2xvYWtIZWFkZXJzOiB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIGNhbGwgY29tbW9uIG1ldGhvZCB0byBwcmVwYXJlIGNvbmZpZyBmb3IgdGhlIHNlcnZpY2Ugb3BlcmF0aW9uIGluZm8uXG4gICAgICAgIGNvbmZpZyA9IFNlcnZpY2VWYXJpYWJsZVV0aWxzLmNvbnN0cnVjdFJlcXVlc3RQYXJhbXModmFyaWFibGUsIG9wSW5mbywgaW5wdXRGaWVsZHMpO1xuICAgICAgICAvKiBpZiBlcnJvciBmb3VuZCwgcmV0dXJuICovXG4gICAgICAgIGlmIChjb25maWcuZXJyb3IgJiYgY29uZmlnLmVycm9yLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX29uU29ja2V0RXJyb3IodmFyaWFibGUsIHtkYXRhOiBjb25maWcuZXJyb3IubWVzc2FnZX0pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb25maWcudXJsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGhhbmRsZXIgZm9yIG9uTWVzc2FnZSBldmVudCBvbiBhIHNvY2tldCBjb25uZWN0aW9uIGZvciBhIHZhcmlhYmxlXG4gICAgICogdGhlIGRhdGEgcmV0dXJuZWQgaXMgY29udmVydGVkIHRvIEpTT04gZnJvbSBzdHJpbmcveG1sIGFuZCBhc3NpZ25lZCB0byBkYXRhU2V0IG9mIHZhcmlhYmxlXG4gICAgICogSWYgbm90IGFibGUgdG8gZG8gc28sIG1lc3NhZ2UgaXMgc2ltcGx5IGFzc2lnbmVkIHRvIHRoZSBkYXRhU2V0IG9mIHZhcmlhYmxlXG4gICAgICogSWYgYXBwZW5kRGF0YSBwcm9wZXJ0eSBpcyBzZXQsIHRoZSBtZXNzYWdlIGlzIGFwcGVuZGVkIHRvIHRoZSBkYXRhU2V0LCBlbHNlIGl0IHJlcGxhY2VzIHRoZSBleGlzdGluZyB2YWx1ZSBvZiBkYXRhU2V0XG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHBhcmFtIGV2dFxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb25Tb2NrZXRNZXNzYWdlKHZhcmlhYmxlLCBldnQpIHtcbiAgICAgICAgbGV0IGRhdGEgPSBnZXQoZXZ0LCAnZGF0YScpLCB2YWx1ZSwgZGF0YUxlbmd0aCwgZGF0YUxpbWl0LCBzaG91bGRBZGRUb0xhc3QsIGluc2VydElkeDtcbiAgICAgICAgZGF0YSA9IGdldFZhbGlkSlNPTihkYXRhKSB8fCB4bWxUb0pzb24oZGF0YSkgfHwgZGF0YTtcbiAgICAgICAgLy8gRVZFTlQ6IE9OX01FU1NBR0VcbiAgICAgICAgdmFsdWUgPSBpbml0aWF0ZUNhbGxiYWNrKFZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVC5NRVNTQUdFX1JFQ0VJVkUsIHZhcmlhYmxlLCBkYXRhLCBldnQpO1xuICAgICAgICBkYXRhID0gaXNEZWZpbmVkKHZhbHVlKSA/IHZhbHVlIDogZGF0YTtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkQXBwZW5kRGF0YSh2YXJpYWJsZSkpIHtcbiAgICAgICAgICAgIHZhcmlhYmxlLmRhdGFTZXQgPSB2YXJpYWJsZS5kYXRhU2V0IHx8IFtdO1xuICAgICAgICAgICAgZGF0YUxlbmd0aCA9IHZhcmlhYmxlLmRhdGFTZXQubGVuZ3RoO1xuICAgICAgICAgICAgZGF0YUxpbWl0ID0gdGhpcy5nZXREYXRhTGltaXQodmFyaWFibGUpO1xuICAgICAgICAgICAgc2hvdWxkQWRkVG9MYXN0ID0gdGhpcy5zaG91bGRBcHBlbmRMYXN0KHZhcmlhYmxlKTtcbiAgICAgICAgICAgIGlmIChkYXRhTGltaXQgJiYgKGRhdGFMZW5ndGggPj0gZGF0YUxpbWl0KSkge1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRBZGRUb0xhc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuZGF0YVNldC5zaGlmdCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLmRhdGFTZXQucG9wKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zZXJ0SWR4ID0gc2hvdWxkQWRkVG9MYXN0ID8gZGF0YUxlbmd0aCA6IDA7XG4gICAgICAgICAgICB2YXJpYWJsZS5kYXRhU2V0LnNwbGljZShpbnNlcnRJZHgsIDAsIGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyaWFibGUuZGF0YVNldCA9IGlzRGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IGRhdGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjYWxscyB0aGUgT05fQkVGT1JFX1NFTkQgY2FsbGJhY2sgb24gdGhlIHZhcmlhYmxlXG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX29uQmVmb3JlU2VuZCh2YXJpYWJsZSwgbWVzc2FnZSkge1xuICAgICAgICAvLyBFVkVOVDogT05fQkVGT1JFX1NFTkRcbiAgICAgICAgcmV0dXJuIGluaXRpYXRlQ2FsbGJhY2soVkFSSUFCTEVfQ09OU1RBTlRTLkVWRU5ULkJFRk9SRV9TRU5ELCB2YXJpYWJsZSwgbWVzc2FnZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2FsbHMgdGhlIE9OX0JFRk9SRV9DTE9TRSBjYWxsYmFjayBhc3NpZ25lZCB0byB0aGUgdmFyaWFibGVcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHJldHVybnMgeyp9XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9vbkJlZm9yZVNvY2tldENsb3NlKHZhcmlhYmxlLCBldnQ/KSB7XG4gICAgICAgIC8vIEVWRU5UOiBPTl9CRUZPUkVfQ0xPU0VcbiAgICAgICAgcmV0dXJuIGluaXRpYXRlQ2FsbGJhY2soVkFSSUFCTEVfQ09OU1RBTlRTLkVWRU5ULkJFRk9SRV9DTE9TRSwgdmFyaWFibGUsIGdldChldnQsICdkYXRhJyksIGV2dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2FsbHMgdGhlIE9OX0JFRk9SRV9PUEVOIGNhbGxiYWNrIGFzc2lnbmVkXG4gICAgICogY2FsbGVkIGp1c3QgYmVmb3JlIHRoZSBjb25uZWN0aW9uIGlzIG9wZW5cbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHJldHVybnMgeyp9XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9vbkJlZm9yZVNvY2tldE9wZW4odmFyaWFibGUsIGV2dD8pIHtcbiAgICAgICAgLy8gRVZFTlQ6IE9OX0JFRk9SRV9PUEVOXG4gICAgICAgIHJldHVybiBpbml0aWF0ZUNhbGxiYWNrKFZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVC5CRUZPUkVfT1BFTiwgdmFyaWFibGUsIGdldChldnQsICdkYXRhJyksIGV2dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2FsbHMgdGhlIE9OX09QRU4gZXZlbnQgb24gdGhlIHZhcmlhYmxlXG4gICAgICogdGhpcyBpcyBjYWxsZWQgb25jZSB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCBieSB0aGUgdmFyaWFibGUgd2l0aCB0aGUgdGFyZ2V0IFdlYlNvY2tldCBzZXJ2aWNlXG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHBhcmFtIGV2dFxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb25Tb2NrZXRPcGVuKHZhcmlhYmxlLCBldnQpIHtcbiAgICAgICAgdmFyaWFibGUuX3NvY2tldENvbm5lY3RlZCA9IHRydWU7XG4gICAgICAgIC8vIEVWRU5UOiBPTl9PUEVOXG4gICAgICAgIGluaXRpYXRlQ2FsbGJhY2soVkFSSUFCTEVfQ09OU1RBTlRTLkVWRU5ULk9QRU4sIHZhcmlhYmxlLCBnZXQoZXZ0LCAnZGF0YScpLCBldnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsZWFycyB0aGUgc29ja2V0IHZhcmlhYmxlIGFnYWluc3QgdGhlIHZhcmlhYmxlIGluIGEgc2NvcGVcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGZyZWVTb2NrZXQodmFyaWFibGUpIHtcbiAgICAgICAgdGhpcy5zY29wZV92YXJfc29ja2V0X21hcC5zZXQodmFyaWFibGUsIHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2FsbHMgdGhlIE9OX0NMT1NFIGV2ZW50IG9uIHRoZSB2YXJpYWJsZVxuICAgICAqIHRoaXMgaXMgY2FsbGVkIG9uIGNsb3NlIG9mIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gb24gYSB2YXJpYWJsZVxuICAgICAqIEBwYXJhbSB2YXJpYWJsZVxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX29uU29ja2V0Q2xvc2UodmFyaWFibGUsIGV2dCkge1xuICAgICAgICB2YXJpYWJsZS5fc29ja2V0Q29ubmVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZnJlZVNvY2tldCh2YXJpYWJsZSk7XG4gICAgICAgIC8vIEVWRU5UOiBPTl9DTE9TRVxuICAgICAgICBpbml0aWF0ZUNhbGxiYWNrKFZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVC5DTE9TRSwgdmFyaWFibGUsIGdldChldnQsICdkYXRhJyksIGV2dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2FsbHMgdGhlIE9OX0VSUk9SIGV2ZW50IG9uIHRoZSB2YXJpYWJsZVxuICAgICAqIHRoaXMgaXMgY2FsbGVkIGlmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBjb25uZWN0aW5nIHRvIHRoZSBzb2NrZXQgc2VydmljZVxuICAgICAqIEBwYXJhbSB2YXJpYWJsZVxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX29uU29ja2V0RXJyb3IodmFyaWFibGUsIGV2dCkge1xuICAgICAgICB2YXJpYWJsZS5fc29ja2V0Q29ubmVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZnJlZVNvY2tldCh2YXJpYWJsZSk7XG4gICAgICAgIC8vIEVWRU5UOiBPTl9FUlJPUlxuICAgICAgICBpbml0aWF0ZUNhbGxiYWNrKFZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVC5FUlJPUiwgdmFyaWFibGUsIGdldChldnQsICdkYXRhJykgfHwgJ0Vycm9yIHdoaWxlIGNvbm5lY3Rpbmcgd2l0aCAnICsgdmFyaWFibGUuc2VydmljZSwgZXZ0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGFuIGV4aXN0aW5nIHNvY2tldCBjb25uZWN0aW9uIG9uIHRoZSB2YXJpYWJsZVxuICAgICAqIGlmIG5vdCBwcmVzZW50LCBtYWtlIHRoZSBjb25uZWN0aW9uIGFuZCByZXR1cm4gaXRcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFNvY2tldCh2YXJpYWJsZSkge1xuICAgICAgICBjb25zdCB1cmwgICAgID0gdGhpcy5nZXRVUkwodmFyaWFibGUpO1xuICAgICAgICBsZXQgX3NvY2tldCA9IHRoaXMuc2NvcGVfdmFyX3NvY2tldF9tYXAuZ2V0KHZhcmlhYmxlKTtcbiAgICAgICAgaWYgKF9zb2NrZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBfc29ja2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVHJpZ2dlciBlcnJvciBpZiB1bnNlY3VyZWQgd2ViU29ja2V0IGlzIHVzZWQgaW4gc2VjdXJlZCBkb21haW4sIGlnbm9yZSBpbiBtb2JpbGUgZGV2aWNlXG4gICAgICAgIGlmICghQ09OU1RBTlRTLmhhc0NvcmRvdmEgJiYgaXNJbnNlY3VyZUNvbnRlbnRSZXF1ZXN0KHVybCkpIHtcbiAgICAgICAgICAgIHRyaWdnZXJGbih0aGlzLl9vblNvY2tldEVycm9yLmJpbmQodGhpcywgdmFyaWFibGUpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBfc29ja2V0ID0gbmV3ICRXZWJTb2NrZXQodXJsKTtcbiAgICAgICAgX3NvY2tldC5vbk9wZW4odGhpcy5fb25Tb2NrZXRPcGVuLmJpbmQodGhpcywgdmFyaWFibGUpKTtcbiAgICAgICAgX3NvY2tldC5vbkVycm9yKHRoaXMuX29uU29ja2V0RXJyb3IuYmluZCh0aGlzLCB2YXJpYWJsZSkpO1xuICAgICAgICBfc29ja2V0Lm9uTWVzc2FnZSh0aGlzLl9vblNvY2tldE1lc3NhZ2UuYmluZCh0aGlzLCB2YXJpYWJsZSkpO1xuICAgICAgICBfc29ja2V0Lm9uQ2xvc2UodGhpcy5fb25Tb2NrZXRDbG9zZS5iaW5kKHRoaXMsIHZhcmlhYmxlKSk7XG5cbiAgICAgICAgdGhpcy5zY29wZV92YXJfc29ja2V0X21hcC5zZXQodmFyaWFibGUsIF9zb2NrZXQpO1xuICAgICAgICB2YXJpYWJsZS5fc29ja2V0ID0gX3NvY2tldDtcbiAgICAgICAgcmV0dXJuIF9zb2NrZXQ7XG59XG5cbiAgICAvKipcbiAgICAgKiBvcGVucyBhIHNvY2tldCBjb25uZWN0aW9uIG9uIHRoZSB2YXJpYWJsZS5cbiAgICAgKiBVUkwgJiBvdGhlciBtZXRhIGRhdGEgaXMgZmV0Y2hlZCBmcm9tIHdtU2VydmljZU9wZXJhdGlvbkluZm9cbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBwdWJsaWMgb3Blbih2YXJpYWJsZTogV2ViU29ja2V0VmFyaWFibGUsIHN1Y2Nlc3M/LCBlcnJvcj8pIHtcbiAgICAgICAgY29uc3Qgc2hvdWxkT3BlbiA9IHRoaXMuX29uQmVmb3JlU29ja2V0T3Blbih2YXJpYWJsZSk7XG4gICAgICAgIGxldCBzb2NrZXQ7XG4gICAgICAgIGlmIChzaG91bGRPcGVuID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdHJpZ2dlckZuKGVycm9yKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzb2NrZXQgPSB0aGlzLmdldFNvY2tldCh2YXJpYWJsZSk7XG4gICAgICAgIHRyaWdnZXJGbihzdWNjZXNzKTtcbiAgICAgICAgcmV0dXJuIHNvY2tldDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjbG9zZXMgYW4gZXhpc3Rpbmcgc29ja2V0IGNvbm5lY3Rpb24gb24gdmFyaWFibGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY2xvc2UodmFyaWFibGU6IFdlYlNvY2tldFZhcmlhYmxlKSB7XG4gICAgICAgIGNvbnN0IHNob3VsZENsb3NlID0gdGhpcy5fb25CZWZvcmVTb2NrZXRDbG9zZSh2YXJpYWJsZSksXG4gICAgICAgICAgICBzb2NrZXQgICAgICA9IHRoaXMuZ2V0U29ja2V0KHZhcmlhYmxlKTtcbiAgICAgICAgaWYgKHNob3VsZENsb3NlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNvY2tldC5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNlbmRzIGEgbWVzc2FnZSB0byB0aGUgZXhpc3Rpbmcgc29ja2V0IGNvbm5lY3Rpb24gb24gdGhlIHZhcmlhYmxlXG4gICAgICogSWYgc29ja2V0IGNvbm5lY3Rpb24gbm90IG9wZW4geWV0LCBvcGVuIGEgY29ubmVjdGlvbnMgYW5kIHRoZW4gc2VuZFxuICAgICAqIGlmIG1lc3NhZ2UgcHJvdmlkZSwgaXQgaXMgc2VudCwgZWxzZSB0aGUgb25lIHByZXNlbnQgaW4gUmVxdWVzdEJvZHkgcGFyYW0gaXMgc2VudFxuICAgICAqIEBwYXJhbSBtZXNzYWdlXG4gICAgICovXG4gICAgcHVibGljIHNlbmQodmFyaWFibGU6IFdlYlNvY2tldFZhcmlhYmxlLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHNvY2tldCAgICAgID0gdGhpcy5nZXRTb2NrZXQodmFyaWFibGUpO1xuICAgICAgICBsZXQgcmVzcG9uc2U7XG5cbiAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UgfHwgZ2V0KHZhcmlhYmxlLCAnZGF0YUJpbmRpbmcuUmVxdWVzdEJvZHknKTtcbiAgICAgICAgcmVzcG9uc2UgPSB0aGlzLl9vbkJlZm9yZVNlbmQodmFyaWFibGUsIG1lc3NhZ2UpO1xuICAgICAgICBpZiAocmVzcG9uc2UgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbWVzc2FnZSA9IGlzRGVmaW5lZChyZXNwb25zZSkgPyByZXNwb25zZSA6IG1lc3NhZ2U7XG4gICAgICAgIG1lc3NhZ2UgPSBpc09iamVjdChtZXNzYWdlKSA/IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpIDogbWVzc2FnZTtcbiAgICAgICAgc29ja2V0LnNlbmQobWVzc2FnZSwgMCk7XG4gICAgfVxufVxuIl19
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXNvY2tldC12YXJpYWJsZS5tYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFyaWFibGVzL3NyYy9tYW5hZ2VyL3ZhcmlhYmxlL3dlYi1zb2NrZXQtdmFyaWFibGUubWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsd0JBQXdCLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDN0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNsRixPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsbUJBQW1CO0lBQWpFOztRQUNJLHlCQUFvQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDakMsYUFBUSxHQUFHO1lBQ1AsU0FBUyxFQUFFLFNBQVM7WUFDcEIsc0JBQXNCLEVBQUUsb0JBQW9CO1lBQzVDLFlBQVksRUFBRSxXQUFXO1NBQzVCLENBQUM7UUFDRix5QkFBb0IsR0FBRztZQUNuQixTQUFTLEVBQUUsU0FBUztZQUNwQixTQUFTLEVBQUUsU0FBUztZQUNwQixRQUFRLEVBQUUsUUFBUTtTQUNyQixDQUFDO0lBc1JOLENBQUM7SUFwUkc7Ozs7T0FJRztJQUNLLGdCQUFnQixDQUFDLFFBQVE7UUFDN0IsUUFBUSxH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QUFDO1lBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDTCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyAkV2ViU29ja2V0IH0gZnJvbSAnYW5ndWxhcjItd2Vic29ja2V0L2FuZ3VsYXIyLXdlYnNvY2tldCc7XG5pbXBvcnQgeyBnZXRWYWxpZEpTT04sIGlzRGVmaW5lZCwgaXNJbnNlY3VyZUNvbnRlbnRSZXF1ZXN0LCBpc09iamVjdCwgdHJpZ2dlckZuLCB4bWxUb0pzb24gfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBCYXNlVmFyaWFibGVNYW5hZ2VyIH0gZnJvbSAnLi9iYXNlLXZhcmlhYmxlLm1hbmFnZXInO1xuaW1wb3J0IHsgV2ViU29ja2V0VmFyaWFibGUgfSBmcm9tICcuLi8uLi9tb2RlbC92YXJpYWJsZS93ZWItc29ja2V0LXZhcmlhYmxlJztcbmltcG9ydCB7IGluaXRpYXRlQ2FsbGJhY2ssIG1ldGFkYXRhU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWwvdmFyaWFibGUvdmFyaWFibGVzLnV0aWxzJztcbmltcG9ydCB7IENPTlNUQU5UUywgVkFSSUFCTEVfQ09OU1RBTlRTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3ZhcmlhYmxlcy5jb25zdGFudHMnO1xuaW1wb3J0IHsgU2VydmljZVZhcmlhYmxlVXRpbHMgfSBmcm9tICcuLi8uLi91dGlsL3ZhcmlhYmxlL3NlcnZpY2UtdmFyaWFibGUudXRpbHMnO1xuaW1wb3J0IHsgZm9yRWFjaCwgZ2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG5leHBvcnQgY2xhc3MgV2ViU29ja2V0VmFyaWFibGVNYW5hZ2VyIGV4dGVuZHMgQmFzZVZhcmlhYmxlTWFuYWdlciB7XG4gICAgc2NvcGVfdmFyX3NvY2tldF9tYXAgPSBuZXcgTWFwKCk7XG4gICAgUFJPUEVSVFkgPSB7XG4gICAgICAgICdTRVJWSUNFJzogJ3NlcnZpY2UnLFxuICAgICAgICAnREFUQV9VUERBVEVfU1RSQVRFR1knOiAnZGF0YVVwZGF0ZVN0cmF0ZWd5JyxcbiAgICAgICAgJ0RBVEFfTElNSVQnOiAnZGF0YUxpbWl0J1xuICAgIH07XG4gICAgREFUQV9VUERBVEVfU1RSQVRFR1kgPSB7XG4gICAgICAgICdSRUZSRVNIJzogJ3JlZnJlc2gnLFxuICAgICAgICAnUFJFUEVORCc6ICdwcmVwZW5kJyxcbiAgICAgICAgJ0FQUEVORCc6ICdhcHBlbmQnXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgdGhlIHN0YXRlIG9mIHByb3BlcnR5IHRvIGRlY2lkZSB3ZWF0aGVyIHRvIGFwcGVuZCBuZXcgbWVzc2FnZXMgdG8gZGF0YVNldCBvciBub3RcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzaG91bGRBcHBlbmREYXRhKHZhcmlhYmxlKSB7XG4gICAgICAgIHZhcmlhYmxlID0gdmFyaWFibGUgfHwgdGhpcztcbiAgICAgICAgcmV0dXJuIHZhcmlhYmxlW3RoaXMuUFJPUEVSVFkuREFUQV9VUERBVEVfU1RSQVRFR1ldICE9PSB0aGlzLkRBVEFfVVBEQVRFX1NUUkFURUdZLlJFRlJFU0g7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyB0aGUgc3RhdGUgb2YgcHJvcGVydHkgdG8gZGVjaWRlIHdlYXRoZXIgdG8gQVBQRU5EIG9yIFBSRVBFTkQgbmV3IG1lc3NhZ2VzIHRvIGRhdGFTZXRcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcmV0dXJucyBib29sZWFuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzaG91bGRBcHBlbmRMYXN0KHZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZVt0aGlzLlBST1BFUlRZLkRBVEFfVVBEQVRFX1NUUkFURUdZXSA9PT0gdGhpcy5EQVRBX1VQREFURV9TVFJBVEVHWS5BUFBFTkQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyB1cHBlciBsaW1pdCBvbiBudW1iZXIgb2YgcmVjb3JkcyB0byBiZSBpbiBkYXRhU2V0XG4gICAgICogdGhpcyBpcyBhcHBsaWNhYmxlIG9ubHkgd2hlbiBhcHBlbmREYXRhIGlzIHRydWVcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcmV0dXJucyB7ZGF0YUxpbWl0fVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0RGF0YUxpbWl0KHZhcmlhYmxlKSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZS5kYXRhTGltaXQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IHVybCBmcm9tIHdtU2VydmljZU9wZXJhdGlvbkluZm9cbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcmV0dXJucyB7Kn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFVSTCh2YXJpYWJsZSkge1xuICAgICAgICBjb25zdCBwcmVmYWJOYW1lID0gdmFyaWFibGUuZ2V0UHJlZmFiTmFtZSgpO1xuICAgICAgICBjb25zdCBvcEluZm8gPSBwcmVmYWJOYW1lID8gXG4gICAgICAgICAgICBnZXQobWV0YWRhdGFTZXJ2aWNlLmdldEJ5T3BlcmF0aW9uSWQodmFyaWFibGUub3BlcmF0aW9uSWQsIHByZWZhYk5hbWUpLCAnd21TZXJ2aWNlT3BlcmF0aW9uSW5mbycpIDogXG4gICAgICAgICAgICBnZXQobWV0YWRhdGFTZXJ2aWNlLmdldEJ5T3BlcmF0aW9uSWQodmFyaWFibGUub3BlcmF0aW9uSWQpLCAnd21TZXJ2aWNlT3BlcmF0aW9uSW5mbycpO1xuICAgICAgICBjb25zdCBpbnB1dEZpZWxkcyA9IHZhcmlhYmxlLmRhdGFCaW5kaW5nO1xuICAgICAgICBcbiAgICAgICAgLy8gYWRkIHNhbXBsZSB2YWx1ZXMgdG8gdGhlIHBhcmFtcyAodXJsIGFuZCBwYXRoKVxuICAgICAgICBmb3JFYWNoKG9wSW5mby5wYXJhbWV0ZXJzLCBmdW5jdGlvbiAocGFyYW0pIHtcbiAgICAgICAgICAgIHBhcmFtLnNhbXBsZVZhbHVlID0gaW5wdXRGaWVsZHNbcGFyYW0ubmFtZV07XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBhbHRob3VnaCwgbm8gaGVhZGVyIHBhcmFtcyB3aWxsIGJlIHByZXNlbnQsIGtlZXBpbmcgJ3NraXBDbG9ha0hlYWRlcnMnIGZsYWcgaWYgc3VwcG9ydCBwcm92aWRlZCBsYXRlclxuICAgICAgICAkLmV4dGVuZChvcEluZm8sIHtcbiAgICAgICAgICAgIHNraXBDbG9ha0hlYWRlcnM6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gY2FsbCBjb21tb24gbWV0aG9kIHRvIHByZXBhcmUgY29uZmlnIGZvciB0aGUgc2VydmljZSBvcGVyYXRpb24gaW5mby5cbiAgICAgICAgY29uc3QgY29uZmlnID0gU2VydmljZVZhcmlhYmxlVXRpbHMuY29uc3RydWN0UmVxdWVzdFBhcmFtcyh2YXJpYWJsZSwgb3BJbmZvLCBpbnB1dEZpZWxkcyk7XG4gICAgICAgIC8qIGlmIGVycm9yIGZvdW5kLCByZXR1cm4gKi9cbiAgICAgICAgaWYgKGNvbmZpZy5lcnJvciAmJiBjb25maWcuZXJyb3IubWVzc2FnZSkge1xuICAgICAgICAgICAgdGhpcy5fb25Tb2NrZXRFcnJvcih2YXJpYWJsZSwge2RhdGE6IGNvbmZpZy5lcnJvci5tZXNzYWdlfSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbmZpZy51cmw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaGFuZGxlciBmb3Igb25NZXNzYWdlIGV2ZW50IG9uIGEgc29ja2V0IGNvbm5lY3Rpb24gZm9yIGEgdmFyaWFibGVcbiAgICAgKiB0aGUgZGF0YSByZXR1cm5lZCBpcyBjb252ZXJ0ZWQgdG8gSlNPTiBmcm9tIHN0cmluZy94bWwgYW5kIGFzc2lnbmVkIHRvIGRhdGFTZXQgb2YgdmFyaWFibGVcbiAgICAgKiBJZiBub3QgYWJsZSB0byBkbyBzbywgbWVzc2FnZSBpcyBzaW1wbHkgYXNzaWduZWQgdG8gdGhlIGRhdGFTZXQgb2YgdmFyaWFibGVcbiAgICAgKiBJZiBhcHBlbmREYXRhIHByb3BlcnR5IGlzIHNldCwgdGhlIG1lc3NhZ2UgaXMgYXBwZW5kZWQgdG8gdGhlIGRhdGFTZXQsIGVsc2UgaXQgcmVwbGFjZXMgdGhlIGV4aXN0aW5nIHZhbHVlIG9mIGRhdGFTZXRcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9vblNvY2tldE1lc3NhZ2UodmFyaWFibGUsIGV2dCkge1xuICAgICAgICBsZXQgZGF0YSA9IGdldChldnQsICdkYXRhJyksIGRhdGFMZW5ndGgsIGRhdGFMaW1pdCwgc2hvdWxkQWRkVG9MYXN0LCBpbnNlcnRJZHg7XG4gICAgICAgIGRhdGEgPSBnZXRWYWxpZEpTT04oZGF0YSkgfHwgeG1sVG9Kc29uKGRhdGEpIHx8IGRhdGE7XG4gICAgICAgIC8vIEVWRU5UOiBPTl9NRVNTQUdFXG4gICAgICAgIGNvbnN0IHZhbHVlID0gaW5pdGlhdGVDYWxsYmFjayhWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlQuTUVTU0FHRV9SRUNFSVZFLCB2YXJpYWJsZSwgZGF0YSwgZXZ0KTtcbiAgICAgICAgZGF0YSA9IGlzRGVmaW5lZCh2YWx1ZSkgPyB2YWx1ZSA6IGRhdGE7XG4gICAgICAgIGlmICh0aGlzLnNob3VsZEFwcGVuZERhdGEodmFyaWFibGUpKSB7XG4gICAgICAgICAgICB2YXJpYWJsZS5kYXRhU2V0ID0gdmFyaWFibGUuZGF0YVNldCB8fCBbXTtcbiAgICAgICAgICAgIGRhdGFMZW5ndGggPSB2YXJpYWJsZS5kYXRhU2V0Lmxlbmd0aDtcbiAgICAgICAgICAgIGRhdGFMaW1pdCA9IHRoaXMuZ2V0RGF0YUxpbWl0KHZhcmlhYmxlKTtcbiAgICAgICAgICAgIHNob3VsZEFkZFRvTGFzdCA9IHRoaXMuc2hvdWxkQXBwZW5kTGFzdCh2YXJpYWJsZSk7XG4gICAgICAgICAgICBpZiAoZGF0YUxpbWl0ICYmIChkYXRhTGVuZ3RoID49IGRhdGFMaW1pdCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQWRkVG9MYXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLmRhdGFTZXQuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5kYXRhU2V0LnBvcCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluc2VydElkeCA9IHNob3VsZEFkZFRvTGFzdCA/IGRhdGFMZW5ndGggOiAwO1xuICAgICAgICAgICAgdmFyaWFibGUuZGF0YVNldC5zcGxpY2UoaW5zZXJ0SWR4LCAwLCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhcmlhYmxlLmRhdGFTZXQgPSBpc0RlZmluZWQodmFsdWUpID8gdmFsdWUgOiBkYXRhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY2FsbHMgdGhlIE9OX0JFRk9SRV9TRU5EIGNhbGxiYWNrIG9uIHRoZSB2YXJpYWJsZVxuICAgICAqIEBwYXJhbSB2YXJpYWJsZVxuICAgICAqIEBwYXJhbSBtZXNzYWdlXG4gICAgICogQHJldHVybnMgeyp9XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9vbkJlZm9yZVNlbmQodmFyaWFibGUsIG1lc3NhZ2UpIHtcbiAgICAgICAgLy8gRVZFTlQ6IE9OX0JFRk9SRV9TRU5EXG4gICAgICAgIHJldHVybiBpbml0aWF0ZUNhbGxiYWNrKFZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVC5CRUZPUkVfU0VORCwgdmFyaWFibGUsIG1lc3NhZ2UpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbGxzIHRoZSBPTl9CRUZPUkVfQ0xPU0UgY2FsbGJhY2sgYXNzaWduZWQgdG8gdGhlIHZhcmlhYmxlXG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHBhcmFtIGV2dFxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb25CZWZvcmVTb2NrZXRDbG9zZSh2YXJpYWJsZSwgZXZ0Pykge1xuICAgICAgICAvLyBFVkVOVDogT05fQkVGT1JFX0NMT1NFXG4gICAgICAgIHJldHVybiBpbml0aWF0ZUNhbGxiYWNrKFZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVC5CRUZPUkVfQ0xPU0UsIHZhcmlhYmxlLCBnZXQoZXZ0LCAnZGF0YScpLCBldnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbGxzIHRoZSBPTl9CRUZPUkVfT1BFTiBjYWxsYmFjayBhc3NpZ25lZFxuICAgICAqIGNhbGxlZCBqdXN0IGJlZm9yZSB0aGUgY29ubmVjdGlvbiBpcyBvcGVuXG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHBhcmFtIGV2dFxuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBfb25CZWZvcmVTb2NrZXRPcGVuKHZhcmlhYmxlLCBldnQ/KSB7XG4gICAgICAgIC8vIEVWRU5UOiBPTl9CRUZPUkVfT1BFTlxuICAgICAgICByZXR1cm4gaW5pdGlhdGVDYWxsYmFjayhWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlQuQkVGT1JFX09QRU4sIHZhcmlhYmxlLCBnZXQoZXZ0LCAnZGF0YScpLCBldnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbGxzIHRoZSBPTl9PUEVOIGV2ZW50IG9uIHRoZSB2YXJpYWJsZVxuICAgICAqIHRoaXMgaXMgY2FsbGVkIG9uY2UgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZhcmlhYmxlIHdpdGggdGhlIHRhcmdldCBXZWJTb2NrZXQgc2VydmljZVxuICAgICAqIEBwYXJhbSB2YXJpYWJsZVxuICAgICAqIEBwYXJhbSBldnRcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByaXZhdGUgX29uU29ja2V0T3Blbih2YXJpYWJsZSwgZXZ0KSB7XG4gICAgICAgIHZhcmlhYmxlLl9zb2NrZXRDb25uZWN0ZWQgPSB0cnVlO1xuICAgICAgICAvLyBFVkVOVDogT05fT1BFTlxuICAgICAgICBpbml0aWF0ZUNhbGxiYWNrKFZBUklBQkxFX0NPTlNUQU5UUy5FVkVOVC5PUEVOLCB2YXJpYWJsZSwgZ2V0KGV2dCwgJ2RhdGEnKSwgZXZ0KTtcbiAgICAgICAgXG4gICAgICAgIC8vIFNlbmQgaW5pdGlhbCByZXF1ZXN0IGJvZHkgaWYgaXQgZXhpc3RzIGFuZCBjb25uZWN0T25QYWdlTG9hZCBpcyB0cnVlXG4gICAgICAgIGlmICh2YXJpYWJsZS5zdGFydFVwZGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSBnZXQodmFyaWFibGUsICdkYXRhQmluZGluZy5SZXF1ZXN0Qm9keScpO1xuICAgICAgICAgICAgaWYgKHJlcXVlc3RCb2R5KSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZCh2YXJpYWJsZSwgcmVxdWVzdEJvZHkpO1xuICAgICAgICAgICAgICAgIH0sIDApOyAgLy8gVXNpbmcgc2V0VGltZW91dCB0byBlbnN1cmUgY29ubmVjdGlvbiBpcyBmdWxseSBlc3RhYmxpc2hlZFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmcmVlU29ja2V0KHZhcmlhYmxlKSB7XG4gICAgICAgIHRoaXMuc2NvcGVfdmFyX3NvY2tldF9tYXAuc2V0KHZhcmlhYmxlLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbGxzIHRoZSBPTl9DTE9TRSBldmVudCBvbiB0aGUgdmFyaWFibGVcbiAgICAgKiB0aGlzIGlzIGNhbGxlZCBvbiBjbG9zZSBvZiBhbiBleGlzdGluZyBjb25uZWN0aW9uIG9uIGEgdmFyaWFibGVcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9vblNvY2tldENsb3NlKHZhcmlhYmxlLCBldnQpIHtcbiAgICAgICAgdmFyaWFibGUuX3NvY2tldENvbm5lY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZyZWVTb2NrZXQodmFyaWFibGUpO1xuICAgICAgICAvLyBFVkVOVDogT05fQ0xPU0VcbiAgICAgICAgaW5pdGlhdGVDYWxsYmFjayhWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlQuQ0xPU0UsIHZhcmlhYmxlLCBnZXQoZXZ0LCAnZGF0YScpLCBldnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNhbGxzIHRoZSBPTl9FUlJPUiBldmVudCBvbiB0aGUgdmFyaWFibGVcbiAgICAgKiB0aGlzIGlzIGNhbGxlZCBpZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgY29ubmVjdGluZyB0byB0aGUgc29ja2V0IHNlcnZpY2VcbiAgICAgKiBAcGFyYW0gdmFyaWFibGVcbiAgICAgKiBAcGFyYW0gZXZ0XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIF9vblNvY2tldEVycm9yKHZhcmlhYmxlLCBldnQpIHtcbiAgICAgICAgdmFyaWFibGUuX3NvY2tldENvbm5lY3RlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZyZWVTb2NrZXQodmFyaWFibGUpO1xuICAgICAgICAvLyBFVkVOVDogT05fRVJST1JcbiAgICAgICAgaW5pdGlhdGVDYWxsYmFjayhWQVJJQUJMRV9DT05TVEFOVFMuRVZFTlQuRVJST1IsIHZhcmlhYmxlLCBnZXQoZXZ0LCAnZGF0YScpIHx8ICdFcnJvciB3aGlsZSBjb25uZWN0aW5nIHdpdGggJyArIHZhcmlhYmxlLnNlcnZpY2UsIGV2dCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyBhbiBleGlzdGluZyBzb2NrZXQgY29ubmVjdGlvbiBvbiB0aGUgdmFyaWFibGVcbiAgICAgKiBpZiBub3QgcHJlc2VudCwgbWFrZSB0aGUgY29ubmVjdGlvbiBhbmQgcmV0dXJuIGl0XG4gICAgICogQHBhcmFtIHZhcmlhYmxlXG4gICAgICogQHJldHVybnMgeyp9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTb2NrZXQodmFyaWFibGUpIHtcbiAgICAgICAgY29uc3QgdXJsID0gdGhpcy5nZXRVUkwodmFyaWFibGUpO1xuICAgICAgICBsZXQgX3NvY2tldCA9IHRoaXMuc2NvcGVfdmFyX3NvY2tldF9tYXAuZ2V0KHZhcmlhYmxlKTtcbiAgICAgICAgaWYgKF9zb2NrZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBfc29ja2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFDT05TVEFOVFMuaGFzQ29yZG92YSAmJiBpc0luc2VjdXJlQ29udGVudFJlcXVlc3QodXJsKSkge1xuICAgICAgICAgICAgdHJpZ2dlckZuKHRoaXMuX29uU29ja2V0RXJyb3IuYmluZCh0aGlzLCB2YXJpYWJsZSkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIF9zb2NrZXQgPSBuZXcgJFdlYlNvY2tldCh1cmwpO1xuICAgICAgICBfc29ja2V0Lm9uT3Blbih0aGlzLl9vblNvY2tldE9wZW4uYmluZCh0aGlzLCB2YXJpYWJsZSkpO1xuICAgICAgICBfc29ja2V0Lm9uRXJyb3IodGhpcy5fb25Tb2NrZXRFcnJvci5iaW5kKHRoaXMsIHZhcmlhYmxlKSk7XG4gICAgICAgIF9zb2NrZXQub25NZXNzYWdlKHRoaXMuX29uU29ja2V0TWVzc2FnZS5iaW5kKHRoaXMsIHZhcmlhYmxlKSk7XG4gICAgICAgIF9zb2NrZXQub25DbG9zZSh0aGlzLl9vblNvY2tldENsb3NlLmJpbmQodGhpcywgdmFyaWFibGUpKTtcblxuICAgICAgICB0aGlzLnNjb3BlX3Zhcl9zb2NrZXRfbWFwLnNldCh2YXJpYWJsZSwgX3NvY2tldCk7XG4gICAgICAgIHZhcmlhYmxlLl9zb2NrZXQgPSBfc29ja2V0O1xuICAgICAgICByZXR1cm4gX3NvY2tldDtcbn1cblxuICAgIC8qKlxuICAgICAqIG9wZW5zIGEgc29ja2V0IGNvbm5lY3Rpb24gb24gdGhlIHZhcmlhYmxlLlxuICAgICAqIFVSTCAmIG90aGVyIG1ldGEgZGF0YSBpcyBmZXRjaGVkIGZyb20gd21TZXJ2aWNlT3BlcmF0aW9uSW5mb1xuICAgICAqIEByZXR1cm5zIHsqfVxuICAgICAqL1xuICAgIHB1YmxpYyBvcGVuKHZhcmlhYmxlOiBXZWJTb2NrZXRWYXJpYWJsZSwgc3VjY2Vzcz8sIGVycm9yPykge1xuICAgICAgICBjb25zdCBzaG91bGRPcGVuID0gdGhpcy5fb25CZWZvcmVTb2NrZXRPcGVuKHZhcmlhYmxlKTtcbiAgICAgICAgaWYgKHNob3VsZE9wZW4gPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0cmlnZ2VyRm4oZXJyb3IpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNvY2tldCA9IHRoaXMuZ2V0U29ja2V0KHZhcmlhYmxlKTtcbiAgICAgICAgdHJpZ2dlckZuKHN1Y2Nlc3MpO1xuICAgICAgICByZXR1cm4gc29ja2V0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNsb3NlcyBhbiBleGlzdGluZyBzb2NrZXQgY29ubmVjdGlvbiBvbiB2YXJpYWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSh2YXJpYWJsZTogV2ViU29ja2V0VmFyaWFibGUpIHtcbiAgICAgICAgY29uc3Qgc2hvdWxkQ2xvc2UgPSB0aGlzLl9vbkJlZm9yZVNvY2tldENsb3NlKHZhcmlhYmxlKTtcbiAgICAgICAgY29uc3Qgc29ja2V0ID0gdGhpcy5nZXRTb2NrZXQodmFyaWFibGUpO1xuICAgICAgICBpZiAoc2hvdWxkQ2xvc2UgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc29ja2V0LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2VuZHMgYSBtZXNzYWdlIHRvIHRoZSBleGlzdGluZyBzb2NrZXQgY29ubmVjdGlvbiBvbiB0aGUgdmFyaWFibGVcbiAgICAgKiBJZiBzb2NrZXQgY29ubmVjdGlvbiBub3Qgb3BlbiB5ZXQsIG9wZW4gYSBjb25uZWN0aW9ucyBhbmQgdGhlbiBzZW5kXG4gICAgICogaWYgbWVzc2FnZSBwcm92aWRlLCBpdCBpcyBzZW50LCBlbHNlIHRoZSBvbmUgcHJlc2VudCBpbiBSZXF1ZXN0Qm9keSBwYXJhbSBpcyBzZW50XG4gICAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VuZCh2YXJpYWJsZTogV2ViU29ja2V0VmFyaWFibGUsIG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgc29ja2V0ID0gdGhpcy5nZXRTb2NrZXQodmFyaWFibGUpO1xuXG4gICAgICAgIGlmICghc29ja2V0KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdXZWJTb2NrZXQgY29ubmVjdGlvbiBub3QgZXN0YWJsaXNoZWQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlIHx8IGdldCh2YXJpYWJsZSwgJ2RhdGFCaW5kaW5nLlJlcXVlc3RCb2R5Jyk7XG4gICAgICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKCdObyBtZXNzYWdlIHRvIHNlbmQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5fb25CZWZvcmVTZW5kKHZhcmlhYmxlLCBtZXNzYWdlKTtcbiAgICAgICAgaWYgKHJlc3BvbnNlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIG1lc3NhZ2UgPSBpc0RlZmluZWQocmVzcG9uc2UpID8gcmVzcG9uc2UgOiBtZXNzYWdlO1xuICAgICAgICBtZXNzYWdlID0gaXNPYmplY3QobWVzc2FnZSkgPyBKU09OLnN0cmluZ2lmeShtZXNzYWdlKSA6IG1lc3NhZ2U7XG4gICAgICAgIFxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgc29ja2V0LnNlbmQobWVzc2FnZSwgMCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzZW5kaW5nIG1lc3NhZ2U6JywgZXJyb3IpO1xuICAgICAgICAgICAgdGhpcy5fb25Tb2NrZXRFcnJvcih2YXJpYWJsZSwgeyBkYXRhOiBlcnJvci5tZXNzYWdlIH0pO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
|
@@ -2532,9 +2532,10 @@ class WebSocketVariableManager extends BaseVariableManager {
|
|
2532
2532
|
*/
|
2533
2533
|
getURL(variable) {
|
2534
2534
|
const prefabName = variable.getPrefabName();
|
2535
|
-
const opInfo = prefabName ?
|
2535
|
+
const opInfo = prefabName ?
|
2536
|
+
get(metadataService.getByOperationId(variable.operationId, prefabName), 'wmServiceOperationInfo') :
|
2537
|
+
get(metadataService.getByOperationId(variable.operationId), 'wmServiceOperationInfo');
|
2536
2538
|
const inputFields = variable.dataBinding;
|
2537
|
-
let config;
|
2538
2539
|
// add sample values to the params (url and path)
|
2539
2540
|
forEach(opInfo.parameters, function (param) {
|
2540
2541
|
param.sampleValue = inputFields[param.name];
|
@@ -2544,7 +2545,7 @@ class WebSocketVariableManager extends BaseVariableManager {
|
|
2544
2545
|
skipCloakHeaders: true
|
2545
2546
|
});
|
2546
2547
|
// call common method to prepare config for the service operation info.
|
2547
|
-
config = ServiceVariableUtils.constructRequestParams(variable, opInfo, inputFields);
|
2548
|
+
const config = ServiceVariableUtils.constructRequestParams(variable, opInfo, inputFields);
|
2548
2549
|
/* if error found, return */
|
2549
2550
|
if (config.error && config.error.message) {
|
2550
2551
|
this._onSocketError(variable, { data: config.error.message });
|
@@ -2562,10 +2563,10 @@ class WebSocketVariableManager extends BaseVariableManager {
|
|
2562
2563
|
* @private
|
2563
2564
|
*/
|
2564
2565
|
_onSocketMessage(variable, evt) {
|
2565
|
-
let data = get(evt, 'data'),
|
2566
|
+
let data = get(evt, 'data'), dataLength, dataLimit, shouldAddToLast, insertIdx;
|
2566
2567
|
data = getValidJSON(data) || xmlToJson(data) || data;
|
2567
2568
|
// EVENT: ON_MESSAGE
|
2568
|
-
value = initiateCallback(VARIABLE_CONSTANTS.EVENT.MESSAGE_RECEIVE, variable, data, evt);
|
2569
|
+
const value = initiateCallback(VARIABLE_CONSTANTS.EVENT.MESSAGE_RECEIVE, variable, data, evt);
|
2569
2570
|
data = isDefined(value) ? value : data;
|
2570
2571
|
if (this.shouldAppendData(variable)) {
|
2571
2572
|
variable.dataSet = variable.dataSet || [];
|
@@ -2632,11 +2633,16 @@ class WebSocketVariableManager extends BaseVariableManager {
|
|
2632
2633
|
variable._socketConnected = true;
|
2633
2634
|
// EVENT: ON_OPEN
|
2634
2635
|
initiateCallback(VARIABLE_CONSTANTS.EVENT.OPEN, variable, get(evt, 'data'), evt);
|
2636
|
+
// Send initial request body if it exists and connectOnPageLoad is true
|
2637
|
+
if (variable.startUpdate) {
|
2638
|
+
const requestBody = get(variable, 'dataBinding.RequestBody');
|
2639
|
+
if (requestBody) {
|
2640
|
+
setTimeout(() => {
|
2641
|
+
this.send(variable, requestBody);
|
2642
|
+
}, 0); // Using setTimeout to ensure connection is fully established
|
2643
|
+
}
|
2644
|
+
}
|
2635
2645
|
}
|
2636
|
-
/**
|
2637
|
-
* clears the socket variable against the variable in a scope
|
2638
|
-
* @param variable
|
2639
|
-
*/
|
2640
2646
|
freeSocket(variable) {
|
2641
2647
|
this.scope_var_socket_map.set(variable, undefined);
|
2642
2648
|
}
|
@@ -2678,7 +2684,6 @@ class WebSocketVariableManager extends BaseVariableManager {
|
|
2678
2684
|
if (_socket) {
|
2679
2685
|
return _socket;
|
2680
2686
|
}
|
2681
|
-
// Trigger error if unsecured webSocket is used in secured domain, ignore in mobile device
|
2682
2687
|
if (!CONSTANTS.hasCordova && isInsecureContentRequest(url)) {
|
2683
2688
|
triggerFn(this._onSocketError.bind(this, variable));
|
2684
2689
|
return;
|
@@ -2699,12 +2704,11 @@ class WebSocketVariableManager extends BaseVariableManager {
|
|
2699
2704
|
*/
|
2700
2705
|
open(variable, success, error) {
|
2701
2706
|
const shouldOpen = this._onBeforeSocketOpen(variable);
|
2702
|
-
let socket;
|
2703
2707
|
if (shouldOpen === false) {
|
2704
2708
|
triggerFn(error);
|
2705
2709
|
return;
|
2706
2710
|
}
|
2707
|
-
socket = this.getSocket(variable);
|
2711
|
+
const socket = this.getSocket(variable);
|
2708
2712
|
triggerFn(success);
|
2709
2713
|
return socket;
|
2710
2714
|
}
|
@@ -2712,7 +2716,8 @@ class WebSocketVariableManager extends BaseVariableManager {
|
|
2712
2716
|
* closes an existing socket connection on variable
|
2713
2717
|
*/
|
2714
2718
|
close(variable) {
|
2715
|
-
const shouldClose = this._onBeforeSocketClose(variable)
|
2719
|
+
const shouldClose = this._onBeforeSocketClose(variable);
|
2720
|
+
const socket = this.getSocket(variable);
|
2716
2721
|
if (shouldClose === false) {
|
2717
2722
|
return;
|
2718
2723
|
}
|
@@ -2726,15 +2731,28 @@ class WebSocketVariableManager extends BaseVariableManager {
|
|
2726
2731
|
*/
|
2727
2732
|
send(variable, message) {
|
2728
2733
|
const socket = this.getSocket(variable);
|
2729
|
-
|
2734
|
+
if (!socket) {
|
2735
|
+
console.error('WebSocket connection not established');
|
2736
|
+
return;
|
2737
|
+
}
|
2730
2738
|
message = message || get(variable, 'dataBinding.RequestBody');
|
2731
|
-
|
2739
|
+
if (!message) {
|
2740
|
+
console.warn('No message to send');
|
2741
|
+
return;
|
2742
|
+
}
|
2743
|
+
const response = this._onBeforeSend(variable, message);
|
2732
2744
|
if (response === false) {
|
2733
2745
|
return;
|
2734
2746
|
}
|
2735
2747
|
message = isDefined(response) ? response : message;
|
2736
2748
|
message = isObject$1(message) ? JSON.stringify(message) : message;
|
2737
|
-
|
2749
|
+
try {
|
2750
|
+
socket.send(message, 0);
|
2751
|
+
}
|
2752
|
+
catch (error) {
|
2753
|
+
console.error('Error sending message:', error);
|
2754
|
+
this._onSocketError(variable, { data: error.message });
|
2755
|
+
}
|
2738
2756
|
}
|
2739
2757
|
}
|
2740
2758
|
|