@wavemaker/app-ng-runtime 12.0.0-next.45002 → 12.0.0-next.45006
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.
- app-ng-runtime/build-task/.npmignore +2 -0
- app-ng-runtime/build-task/bundles/index.umd.js +341 -344
- app-ng-runtime/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +5 -3
- app-ng-runtime/build-task/esm2022/advanced/carousel/carousel.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/basic/progress/progress-bar/progress-bar.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/containers/repeat-template.build.mjs +5 -3
- app-ng-runtime/build-task/esm2022/containers/tabs/tabs.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/data/form/form.build.mjs +5 -2
- app-ng-runtime/build-task/esm2022/data/list/list.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/data/media-list/media-list.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/data/table/table-column/table-column.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/data/table/table.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/dialogs/partial-dialog/partial-dialog.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/navigation/menu/menu.build.mjs +8 -3
- app-ng-runtime/build-task/esm2022/navigation/popover/popover.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/page/page-content/page-content.build.mjs +1 -1
- app-ng-runtime/build-task/esm2022/page/page.build.mjs +3 -2
- app-ng-runtime/build-task/esm2022/public_api.mjs +1 -2
- app-ng-runtime/build-task/esm2022/utils/utils.mjs +1 -1
- app-ng-runtime/build-task/fesm2022/index.mjs +340 -341
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/build-task/public_api.d.ts +0 -1
- app-ng-runtime/components/advanced/carousel/.npmignore +2 -0
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +29 -18
- app-ng-runtime/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +3 -3
- app-ng-runtime/components/advanced/carousel/carousel.directive.d.ts +2 -2
- app-ng-runtime/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +15 -9
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +3 -2
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.directive.mjs +12 -7
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.module.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +28 -16
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/custom/.npmignore +2 -0
- app-ng-runtime/components/advanced/custom/bundles/index.umd.js +31 -94
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +2 -0
- app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +1 -0
- app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +4 -5
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +21 -13
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +5 -2
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +5 -5
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +2 -9
- app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +1 -2
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +31 -93
- app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/custom/public_api.d.ts +0 -1
- app-ng-runtime/components/advanced/login/.npmignore +2 -0
- app-ng-runtime/components/advanced/login/bundles/index.umd.js +19 -13
- app-ng-runtime/components/advanced/login/esm2022/login.component.mjs +17 -10
- app-ng-runtime/components/advanced/login/esm2022/login.module.mjs +2 -2
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs +18 -11
- app-ng-runtime/components/advanced/login/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/login/login.component.d.ts +2 -2
- app-ng-runtime/components/advanced/marquee/.npmignore +2 -0
- app-ng-runtime/components/advanced/marquee/bundles/index.umd.js +11 -6
- app-ng-runtime/components/advanced/marquee/esm2022/marquee.directive.mjs +12 -7
- app-ng-runtime/components/advanced/marquee/esm2022/marquee.module.mjs +2 -2
- app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs +13 -8
- app-ng-runtime/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/marquee/marquee.directive.d.ts +2 -2
- app-ng-runtime/components/base/.npmignore +2 -0
- app-ng-runtime/components/base/bundles/index.umd.js +400 -312
- app-ng-runtime/components/base/directives/show-in-device.directive.d.ts +3 -6
- app-ng-runtime/components/base/esm2022/components.module.mjs +2 -2
- app-ng-runtime/components/base/esm2022/directives/show-in-device.directive.mjs +13 -15
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +35 -34
- app-ng-runtime/components/base/esm2022/pipes/image.pipe.mjs +2 -2
- app-ng-runtime/components/base/esm2022/pipes/sanitize.pipe.mjs +3 -3
- app-ng-runtime/components/base/esm2022/pipes/trust-as.pipe.mjs +3 -3
- app-ng-runtime/components/base/esm2022/pipes/wm-pipe.mjs +3 -2
- app-ng-runtime/components/base/esm2022/public_api.mjs +2 -1
- app-ng-runtime/components/base/esm2022/utils/data-utils.mjs +30 -29
- app-ng-runtime/components/base/esm2022/utils/form-utils.mjs +48 -42
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -7
- app-ng-runtime/components/base/esm2022/utils/widget-utils.mjs +28 -27
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-container.component.mjs +8 -7
- app-ng-runtime/components/base/esm2022/widgets/common/base/base-field-validations.mjs +23 -22
- app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +63 -42
- app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +4 -4
- app-ng-runtime/components/base/esm2022/widgets/common/base/dataset-aware-nav.component.mjs +52 -18
- app-ng-runtime/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +6 -5
- app-ng-runtime/components/base/esm2022/widgets/common/base/stylable.component.mjs +3 -3
- app-ng-runtime/components/base/esm2022/widgets/common/base/text-content.directive.mjs +3 -3
- app-ng-runtime/components/base/esm2022/widgets/common/container/container.directive.mjs +12 -7
- app-ng-runtime/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +5 -4
- app-ng-runtime/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +12 -7
- app-ng-runtime/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +14 -7
- app-ng-runtime/components/base/esm2022/widgets/common/message/message.component.mjs +16 -10
- app-ng-runtime/components/base/esm2022/widgets/common/partial/partial.directive.mjs +14 -8
- app-ng-runtime/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +9 -8
- app-ng-runtime/components/base/esm2022/widgets/common/pull-to-refresh/pull-to-refresh.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +4 -4
- app-ng-runtime/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +15 -9
- app-ng-runtime/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +11 -10
- app-ng-runtime/components/base/esm2022/widgets/framework/deviceview.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -2
- app-ng-runtime/components/base/esm2022/widgets/framework/styler.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/framework/widget-props.mjs +1 -1
- app-ng-runtime/components/base/esm2022/widgets/framework/widget-proxy-provider.mjs +4 -3
- app-ng-runtime/components/base/esm2022/widgets/framework/widget-registry.mjs +1 -1
- app-ng-runtime/components/base/fesm2022/index.mjs +405 -315
- 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/base/public_api.d.ts +1 -0
- app-ng-runtime/components/base/utils/data-utils.d.ts +1 -0
- app-ng-runtime/components/base/utils/widget-utils.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/base/base-container.component.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +22 -4
- app-ng-runtime/components/base/widgets/common/base/dataset-aware-nav.component.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/container/container.directive.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/item-template/item-template.directive.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/message/message.component.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/partial/partial.directive.d.ts +2 -2
- app-ng-runtime/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +3 -3
- app-ng-runtime/components/basic/default/.npmignore +2 -0
- app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +2 -2
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +2 -2
- app-ng-runtime/components/basic/default/bundles/index.umd.js +158 -115
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +31 -27
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +13 -7
- app-ng-runtime/components/basic/default/esm2022/basic.module.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/html/html.directive.mjs +13 -8
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +19 -14
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +15 -9
- app-ng-runtime/components/basic/default/esm2022/label/label.directive.mjs +15 -9
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +12 -7
- app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +1 -1
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.component.mjs +34 -30
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +21 -17
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +157 -113
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/default/html/html.directive.d.ts +2 -2
- app-ng-runtime/components/basic/default/icon/icon.component.d.ts +2 -2
- app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +2 -2
- app-ng-runtime/components/basic/default/label/label.directive.d.ts +2 -2
- app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -2
- app-ng-runtime/components/basic/default/spinner/spinner.component.d.ts +2 -2
- app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -2
- app-ng-runtime/components/basic/progress/.npmignore +2 -0
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +40 -28
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +22 -15
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +17 -10
- app-ng-runtime/components/basic/progress/esm2022/progress.module.mjs +2 -2
- app-ng-runtime/components/basic/progress/esm2022/utils.mjs +3 -3
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +39 -26
- 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 -2
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +2 -2
- app-ng-runtime/components/basic/rich-text-editor/.npmignore +2 -0
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +19 -13
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +17 -10
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +2 -2
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +18 -11
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/rich-text-editor/rich-text-editor.component.d.ts +2 -2
- app-ng-runtime/components/basic/search/.npmignore +2 -0
- app-ng-runtime/components/basic/search/bundles/index.umd.js +186 -175
- app-ng-runtime/components/basic/search/esm2022/data-provider/data-provider.mjs +1 -1
- app-ng-runtime/components/basic/search/esm2022/data-provider/local-data-provider.mjs +26 -23
- app-ng-runtime/components/basic/search/esm2022/data-provider/remote-data-provider.mjs +12 -11
- app-ng-runtime/components/basic/search/esm2022/scrollable.directive.mjs +3 -3
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +148 -138
- app-ng-runtime/components/basic/search/esm2022/search.module.mjs +2 -2
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +186 -174
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/search.component.d.ts +2 -2
- app-ng-runtime/components/basic/tree/.npmignore +2 -0
- app-ng-runtime/components/basic/tree/bundles/index.umd.js +23 -17
- app-ng-runtime/components/basic/tree/esm2022/tree.component.mjs +21 -14
- app-ng-runtime/components/basic/tree/esm2022/tree.module.mjs +2 -2
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs +22 -15
- app-ng-runtime/components/basic/tree/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/tree/tree.component.d.ts +2 -2
- app-ng-runtime/components/chart/.npmignore +2 -0
- app-ng-runtime/components/chart/bundles/index.umd.js +97 -84
- app-ng-runtime/components/chart/chart.component.d.ts +3 -3
- app-ng-runtime/components/chart/chart.utils.d.ts +3 -3
- app-ng-runtime/components/chart/esm2022/chart.component.mjs +82 -68
- app-ng-runtime/components/chart/esm2022/chart.module.mjs +2 -2
- app-ng-runtime/components/chart/esm2022/chart.utils.mjs +14 -13
- app-ng-runtime/components/chart/fesm2022/index.mjs +95 -81
- app-ng-runtime/components/chart/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/accordion/.npmignore +2 -0
- app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +2 -2
- app-ng-runtime/components/containers/accordion/accordion.directive.d.ts +2 -2
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +51 -40
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +23 -17
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.props.mjs +4 -4
- app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +25 -19
- app-ng-runtime/components/containers/accordion/esm2022/accordion.module.mjs +2 -2
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +50 -38
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/layout-grid/.npmignore +2 -0
- app-ng-runtime/components/containers/layout-grid/bundles/index.umd.js +32 -17
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +13 -8
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +12 -7
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +12 -7
- app-ng-runtime/components/containers/layout-grid/esm2022/layout-grid.module.mjs +2 -2
- app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs +34 -19
- app-ng-runtime/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +2 -2
- app-ng-runtime/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +2 -2
- app-ng-runtime/components/containers/layout-grid/layout-grid.directive.d.ts +2 -2
- app-ng-runtime/components/containers/linear-layout/.npmignore +2 -0
- app-ng-runtime/components/containers/linear-layout/bundles/index.umd.js +21 -11
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +12 -7
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +12 -7
- app-ng-runtime/components/containers/linear-layout/esm2022/linear-layout.module.mjs +2 -2
- app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs +23 -13
- app-ng-runtime/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +2 -2
- app-ng-runtime/components/containers/linear-layout/linear-layout.directive.d.ts +2 -2
- app-ng-runtime/components/containers/panel/.npmignore +2 -0
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +85 -85
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +83 -82
- app-ng-runtime/components/containers/panel/esm2022/panel.module.mjs +2 -2
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +84 -83
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/panel.component.d.ts +3 -3
- app-ng-runtime/components/containers/tabs/.npmignore +2 -0
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +74 -63
- app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +14 -8
- app-ng-runtime/components/containers/tabs/esm2022/tab-pane/tab-pane.props.mjs +4 -4
- app-ng-runtime/components/containers/tabs/esm2022/tabs.animator.mjs +1 -1
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +57 -51
- app-ng-runtime/components/containers/tabs/esm2022/tabs.module.mjs +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.props.mjs +1 -1
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +73 -61
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tabs/tab-pane/tab-pane.component.d.ts +2 -2
- app-ng-runtime/components/containers/tabs/tabs.component.d.ts +2 -2
- app-ng-runtime/components/containers/tile/.npmignore +2 -0
- app-ng-runtime/components/containers/tile/bundles/index.umd.js +11 -6
- app-ng-runtime/components/containers/tile/esm2022/tile.directive.mjs +12 -7
- app-ng-runtime/components/containers/tile/esm2022/tile.module.mjs +2 -2
- app-ng-runtime/components/containers/tile/fesm2022/index.mjs +13 -8
- app-ng-runtime/components/containers/tile/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tile/tile.directive.d.ts +2 -2
- app-ng-runtime/components/containers/wizard/.npmignore +2 -0
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js +102 -98
- app-ng-runtime/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +13 -8
- app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +92 -93
- app-ng-runtime/components/containers/wizard/esm2022/wizard.module.mjs +2 -2
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +104 -100
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/wizard-step/wizard-step.directive.d.ts +2 -2
- app-ng-runtime/components/containers/wizard/wizard.component.d.ts +2 -2
- app-ng-runtime/components/data/card/.npmignore +2 -0
- app-ng-runtime/components/data/card/bundles/index.umd.js +70 -50
- app-ng-runtime/components/data/card/card-actions/card-actions.directive.d.ts +2 -2
- app-ng-runtime/components/data/card/card-content/card-content.component.d.ts +2 -2
- app-ng-runtime/components/data/card/card-footer/card-footer.directive.d.ts +2 -2
- app-ng-runtime/components/data/card/card.component.d.ts +2 -2
- app-ng-runtime/components/data/card/esm2022/card-actions/card-actions.directive.mjs +12 -7
- app-ng-runtime/components/data/card/esm2022/card-content/card-content.component.mjs +15 -9
- app-ng-runtime/components/data/card/esm2022/card-footer/card-footer.directive.mjs +12 -7
- app-ng-runtime/components/data/card/esm2022/card.component.mjs +38 -34
- app-ng-runtime/components/data/card/esm2022/card.module.mjs +2 -2
- app-ng-runtime/components/data/card/fesm2022/index.mjs +72 -52
- app-ng-runtime/components/data/card/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/.npmignore +2 -0
- app-ng-runtime/components/data/form/bundles/index.umd.js +197 -184
- app-ng-runtime/components/data/form/esm2022/form-action/form-action.directive.mjs +15 -9
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +21 -15
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.props.mjs +1 -1
- app-ng-runtime/components/data/form/esm2022/form-widget.directive.mjs +4 -4
- app-ng-runtime/components/data/form/esm2022/form.component.mjs +138 -134
- app-ng-runtime/components/data/form/esm2022/form.module.mjs +2 -2
- app-ng-runtime/components/data/form/esm2022/form.props.mjs +1 -1
- app-ng-runtime/components/data/form/esm2022/live-actions/dependson.directive.mjs +4 -4
- app-ng-runtime/components/data/form/esm2022/live-actions/live-actions.directive.mjs +4 -4
- app-ng-runtime/components/data/form/esm2022/live-filter/live-filter.directive.mjs +7 -6
- app-ng-runtime/components/data/form/esm2022/live-form/live-form.directive.mjs +14 -13
- app-ng-runtime/components/data/form/fesm2022/index.mjs +201 -187
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form-action/form-action.directive.d.ts +2 -2
- app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +2 -2
- app-ng-runtime/components/data/form/form.component.d.ts +4 -4
- app-ng-runtime/components/data/form/live-form/live-form.directive.d.ts +1 -1
- app-ng-runtime/components/data/list/.npmignore +2 -0
- app-ng-runtime/components/data/list/bundles/index.umd.js +829 -818
- app-ng-runtime/components/data/list/esm2022/list-item.directive.mjs +9 -4
- app-ng-runtime/components/data/list/esm2022/list.animator.mjs +5 -3
- app-ng-runtime/components/data/list/esm2022/list.component.mjs +817 -810
- app-ng-runtime/components/data/list/esm2022/list.module.mjs +2 -2
- app-ng-runtime/components/data/list/fesm2022/index.mjs +828 -816
- app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/list/list-item.directive.d.ts +4 -0
- app-ng-runtime/components/data/list/list.component.d.ts +55 -54
- app-ng-runtime/components/data/live-table/.npmignore +2 -0
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +13 -7
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +14 -8
- app-ng-runtime/components/data/live-table/esm2022/live-table.module.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +15 -9
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/live-table/live-table.component.d.ts +2 -2
- app-ng-runtime/components/data/pagination/.npmignore +2 -0
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +113 -110
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +111 -107
- app-ng-runtime/components/data/pagination/esm2022/pagination.module.mjs +2 -2
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +112 -108
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/pagination.component.d.ts +2 -2
- app-ng-runtime/components/data/table/.npmignore +2 -0
- app-ng-runtime/components/data/table/bundles/index.umd.js +314 -269
- app-ng-runtime/components/data/table/esm2022/table-action/table-action.directive.mjs +15 -9
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +40 -25
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.props.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +13 -8
- app-ng-runtime/components/data/table/esm2022/table-cud.directive.mjs +10 -9
- app-ng-runtime/components/data/table/esm2022/table-filter.directive.mjs +56 -58
- app-ng-runtime/components/data/table/esm2022/table-row/table-row.directive.mjs +13 -8
- app-ng-runtime/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +14 -8
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +165 -150
- app-ng-runtime/components/data/table/esm2022/table.module.mjs +2 -2
- app-ng-runtime/components/data/table/esm2022/table.props.mjs +2 -2
- app-ng-runtime/components/data/table/fesm2022/index.mjs +313 -267
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table-action/table-action.directive.d.ts +2 -2
- app-ng-runtime/components/data/table/table-column/table-column.directive.d.ts +8 -8
- app-ng-runtime/components/data/table/table-column-group/table-column-group.directive.d.ts +2 -2
- app-ng-runtime/components/data/table/table-row/table-row.directive.d.ts +2 -2
- app-ng-runtime/components/data/table/table-row-action/table-row-action.directive.d.ts +2 -2
- app-ng-runtime/components/data/table/table.component.d.ts +4 -4
- app-ng-runtime/components/dialogs/alert-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/alert-dialog/alert-dialog.component.d.ts +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +15 -9
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +16 -10
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +17 -11
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +17 -11
- app-ng-runtime/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +18 -12
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +19 -13
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/.npmignore +2 -0
- app-ng-runtime/components/dialogs/default/base-dialog.d.ts +2 -2
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +75 -71
- app-ng-runtime/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +2 -2
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +14 -9
- app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +4 -4
- app-ng-runtime/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +12 -7
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +49 -55
- app-ng-runtime/components/dialogs/default/esm2022/dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +76 -72
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +20 -14
- app-ng-runtime/components/dialogs/design-dialog/dialog.component.d.ts +2 -2
- app-ng-runtime/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +21 -15
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +22 -16
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +20 -14
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +21 -15
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +22 -16
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +2 -2
- app-ng-runtime/components/dialogs/login-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/login-dialog/bundles/index.umd.js +4 -4
- app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +4 -4
- app-ng-runtime/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/.npmignore +2 -0
- app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +16 -10
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +17 -11
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +2 -2
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +18 -12
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/partial-dialog.component.d.ts +2 -2
- app-ng-runtime/components/input/calendar/.npmignore +2 -0
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +46 -38
- app-ng-runtime/components/input/calendar/calendar.component.d.ts +2 -2
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +44 -35
- app-ng-runtime/components/input/calendar/esm2022/calendar.module.mjs +2 -2
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +45 -36
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/.npmignore +2 -0
- app-ng-runtime/components/input/chips/bundles/index.umd.js +69 -61
- app-ng-runtime/components/input/chips/chips.component.d.ts +3 -3
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +67 -58
- app-ng-runtime/components/input/chips/esm2022/chips.module.mjs +2 -2
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +67 -58
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/.npmignore +2 -0
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +25 -12
- app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +2 -2
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +26 -13
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.module.mjs +2 -2
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +26 -13
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/.npmignore +2 -0
- app-ng-runtime/components/input/currency/bundles/index.umd.js +18 -11
- app-ng-runtime/components/input/currency/currency.component.d.ts +2 -2
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +19 -12
- app-ng-runtime/components/input/currency/esm2022/currency.module.mjs +2 -2
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +19 -12
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/.npmignore +2 -0
- app-ng-runtime/components/input/default/base-form.component.d.ts +3 -3
- app-ng-runtime/components/input/default/bundles/index.umd.js +583 -450
- app-ng-runtime/components/input/default/button/button.component.d.ts +2 -2
- app-ng-runtime/components/input/default/button-group/button-group.directive.d.ts +2 -2
- app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +3 -2
- app-ng-runtime/components/input/default/checkboxset/checkboxset.component.d.ts +2 -2
- app-ng-runtime/components/input/default/composite/composite.directive.d.ts +2 -2
- app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +4 -4
- app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +3 -3
- app-ng-runtime/components/input/default/esm2022/base-form.component.mjs +17 -11
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +32 -28
- app-ng-runtime/components/input/default/esm2022/button-group/button-group.directive.mjs +12 -7
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +5 -4
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +27 -17
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +107 -103
- app-ng-runtime/components/input/default/esm2022/composite/composite.directive.mjs +12 -7
- app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +32 -26
- app-ng-runtime/components/input/default/esm2022/input.module.mjs +2 -2
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +17 -10
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +105 -102
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +43 -32
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +38 -31
- app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +18 -11
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +23 -12
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +23 -12
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +20 -11
- app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +35 -24
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +21 -12
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +20 -11
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +21 -12
- app-ng-runtime/components/input/default/fesm2022/index.mjs +586 -451
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/number/number.component.d.ts +2 -2
- app-ng-runtime/components/input/default/radioset/radioset.component.d.ts +2 -2
- app-ng-runtime/components/input/default/select/select.component.d.ts +2 -2
- app-ng-runtime/components/input/default/switch/switch.component.d.ts +2 -2
- app-ng-runtime/components/input/default/text/base/base-input.d.ts +3 -2
- app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +2 -2
- app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +2 -2
- app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +2 -2
- app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -1
- app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +2 -2
- app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +2 -2
- app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +2 -2
- app-ng-runtime/components/input/epoch/.npmignore +2 -0
- app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -2
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +200 -163
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +2 -2
- app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -2
- app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +44 -36
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +29 -21
- app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/date/imaskUtil.mjs +1 -1
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +42 -41
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +49 -37
- app-ng-runtime/components/input/epoch/esm2022/epoch.module.mjs +2 -2
- app-ng-runtime/components/input/epoch/esm2022/picker/picker.component.mjs +7 -5
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +35 -24
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +197 -159
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/time/time.component.d.ts +2 -2
- app-ng-runtime/components/input/file-upload/.npmignore +2 -0
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +133 -135
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +131 -132
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +132 -133
- 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 +2 -2
- app-ng-runtime/components/input/rating/.npmignore +2 -0
- app-ng-runtime/components/input/rating/bundles/index.umd.js +60 -51
- app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +58 -48
- app-ng-runtime/components/input/rating/esm2022/rating.module.mjs +2 -2
- app-ng-runtime/components/input/rating/fesm2022/index.mjs +58 -48
- app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/rating/rating.component.d.ts +2 -2
- app-ng-runtime/components/input/slider/.npmignore +2 -0
- app-ng-runtime/components/input/slider/bundles/index.umd.js +23 -13
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +24 -14
- app-ng-runtime/components/input/slider/esm2022/slider.module.mjs +2 -2
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +24 -14
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/slider.component.d.ts +2 -2
- app-ng-runtime/components/navigation/breadcrumb/.npmignore +2 -0
- app-ng-runtime/components/navigation/breadcrumb/breadcrumb.component.d.ts +2 -2
- app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +33 -28
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +34 -29
- app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +2 -2
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +35 -30
- app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/.npmignore +2 -0
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +160 -145
- app-ng-runtime/components/navigation/menu/esm2022/menu-adapator.component.mjs +13 -7
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +5 -4
- app-ng-runtime/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +27 -26
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +44 -40
- app-ng-runtime/components/navigation/menu/esm2022/menu.module.mjs +4 -3
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +14 -8
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +63 -63
- app-ng-runtime/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +3 -3
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +160 -144
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu-adapator.component.d.ts +1 -1
- app-ng-runtime/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +12 -1
- app-ng-runtime/components/navigation/menu/menu.component.d.ts +2 -2
- app-ng-runtime/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +3 -3
- app-ng-runtime/components/navigation/menu/nav/nav.component.d.ts +3 -4
- app-ng-runtime/components/navigation/navbar/.npmignore +2 -0
- app-ng-runtime/components/navigation/navbar/bundles/index.umd.js +29 -22
- app-ng-runtime/components/navigation/navbar/esm2022/navbar.component.mjs +30 -23
- app-ng-runtime/components/navigation/navbar/esm2022/navbar.module.mjs +2 -2
- app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs +31 -24
- app-ng-runtime/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/navbar/navbar.component.d.ts +2 -2
- app-ng-runtime/components/navigation/popover/.npmignore +2 -0
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +18 -11
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +19 -12
- app-ng-runtime/components/navigation/popover/esm2022/popover.module.mjs +2 -2
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +20 -13
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/popover.component.d.ts +2 -2
- app-ng-runtime/components/page/default/.npmignore +2 -0
- app-ng-runtime/components/page/default/bundles/index.umd.js +63 -31
- app-ng-runtime/components/page/default/content/content.component.d.ts +2 -2
- app-ng-runtime/components/page/default/esm2022/content/content.component.mjs +13 -7
- app-ng-runtime/components/page/default/esm2022/layout.directive.mjs +12 -7
- app-ng-runtime/components/page/default/esm2022/page-content/page-content.component.mjs +13 -7
- app-ng-runtime/components/page/default/esm2022/page.directive.mjs +12 -7
- app-ng-runtime/components/page/default/esm2022/page.module.mjs +2 -2
- app-ng-runtime/components/page/default/esm2022/router-outlet.directive.mjs +12 -7
- app-ng-runtime/components/page/default/esm2022/spa-page.directive.mjs +12 -7
- app-ng-runtime/components/page/default/fesm2022/index.mjs +65 -33
- app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/default/layout.directive.d.ts +2 -2
- app-ng-runtime/components/page/default/page-content/page-content.component.d.ts +2 -2
- app-ng-runtime/components/page/default/page.directive.d.ts +2 -2
- app-ng-runtime/components/page/default/router-outlet.directive.d.ts +2 -2
- app-ng-runtime/components/page/default/spa-page.directive.d.ts +2 -2
- app-ng-runtime/components/page/footer/.npmignore +2 -0
- app-ng-runtime/components/page/footer/bundles/index.umd.js +11 -6
- app-ng-runtime/components/page/footer/esm2022/footer.directive.mjs +12 -7
- app-ng-runtime/components/page/footer/esm2022/footer.module.mjs +2 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +13 -8
- app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/footer/footer.directive.d.ts +2 -2
- app-ng-runtime/components/page/header/.npmignore +2 -0
- app-ng-runtime/components/page/header/bundles/index.umd.js +12 -6
- app-ng-runtime/components/page/header/esm2022/header.component.mjs +13 -7
- app-ng-runtime/components/page/header/esm2022/header.module.mjs +2 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +14 -8
- app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/header/header.component.d.ts +2 -2
- app-ng-runtime/components/page/left-panel/.npmignore +2 -0
- app-ng-runtime/components/page/left-panel/bundles/index.umd.js +12 -7
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.animator.mjs +1 -1
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.directive.mjs +13 -8
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +14 -9
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/left-panel/left-panel.directive.d.ts +2 -2
- app-ng-runtime/components/page/right-panel/.npmignore +2 -0
- app-ng-runtime/components/page/right-panel/bundles/index.umd.js +11 -6
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.directive.mjs +12 -7
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.module.mjs +2 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +13 -8
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/right-panel/right-panel.directive.d.ts +2 -2
- app-ng-runtime/components/page/top-nav/.npmignore +2 -0
- app-ng-runtime/components/page/top-nav/bundles/index.umd.js +11 -6
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.directive.mjs +12 -7
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.module.mjs +2 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +13 -8
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/top-nav/top-nav.directive.d.ts +2 -2
- app-ng-runtime/components/prefab/.npmignore +2 -0
- app-ng-runtime/components/prefab/bundles/index.umd.js +28 -18
- app-ng-runtime/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +14 -8
- app-ng-runtime/components/prefab/esm2022/prefab.directive.mjs +15 -9
- app-ng-runtime/components/prefab/esm2022/prefab.module.mjs +2 -2
- app-ng-runtime/components/prefab/fesm2022/index.mjs +26 -15
- app-ng-runtime/components/prefab/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/prefab/prefab-container/prefab-container.directive.d.ts +2 -2
- app-ng-runtime/components/prefab/prefab.directive.d.ts +2 -2
- app-ng-runtime/core/.npmignore +2 -0
- app-ng-runtime/core/bundles/index.umd.js +158 -146
- app-ng-runtime/core/esm2022/core.module.mjs +2 -2
- app-ng-runtime/core/esm2022/public_api.mjs +3 -2
- app-ng-runtime/core/esm2022/services/constant.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/custom-icons-loader.service.mjs +26 -0
- app-ng-runtime/core/esm2022/services/field-type.service.mjs +5 -4
- app-ng-runtime/core/esm2022/services/field-widget.service.mjs +5 -4
- app-ng-runtime/core/esm2022/services/pagination.service.mjs +8 -7
- app-ng-runtime/core/esm2022/services/script-loader.service.mjs +3 -3
- app-ng-runtime/core/esm2022/services/state-persistence.service.mjs +18 -17
- app-ng-runtime/core/esm2022/services/user-custom-pipe-manager.service.mjs +2 -2
- app-ng-runtime/core/esm2022/services/utils.service.mjs +5 -4
- app-ng-runtime/core/esm2022/services/viewport.service.mjs +5 -4
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +5 -4
- app-ng-runtime/core/esm2022/utils/dom.mjs +1 -1
- app-ng-runtime/core/esm2022/utils/event-notifier.mjs +1 -1
- app-ng-runtime/core/esm2022/utils/expression-parser.mjs +6 -5
- app-ng-runtime/core/esm2022/utils/id-generator.mjs +1 -1
- app-ng-runtime/core/esm2022/utils/lru-cache.mjs +3 -2
- app-ng-runtime/core/esm2022/utils/utils.mjs +79 -82
- app-ng-runtime/core/esm2022/utils/watcher.mjs +9 -7
- app-ng-runtime/core/esm2022/utils/wm-project-properties.mjs +1 -1
- app-ng-runtime/core/fesm2022/index.mjs +158 -142
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +2 -1
- app-ng-runtime/core/services/custom-icons-loader.service.d.ts +7 -0
- app-ng-runtime/core/services/pagination.service.d.ts +1 -1
- app-ng-runtime/core/utils/utils.d.ts +5 -9
- app-ng-runtime/http/.npmignore +2 -0
- app-ng-runtime/http/bundles/index.umd.js +10 -10
- app-ng-runtime/http/esm2022/http-service.module.mjs +2 -2
- app-ng-runtime/http/esm2022/http.service.mjs +7 -6
- app-ng-runtime/http/esm2022/wm-http-request.mjs +1 -1
- app-ng-runtime/http/esm2022/wm-http-response.mjs +1 -1
- app-ng-runtime/http/fesm2022/index.mjs +7 -6
- app-ng-runtime/http/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/locales/angular/global/af-na.js +4 -4
- app-ng-runtime/locales/angular/global/af.js +4 -4
- app-ng-runtime/locales/angular/global/agq.js +4 -4
- app-ng-runtime/locales/angular/global/ak.js +4 -4
- app-ng-runtime/locales/angular/global/am.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ae.js +4 -4
- app-ng-runtime/locales/angular/global/ar-bh.js +4 -4
- app-ng-runtime/locales/angular/global/ar-dj.js +4 -4
- app-ng-runtime/locales/angular/global/ar-dz.js +4 -4
- app-ng-runtime/locales/angular/global/ar-eg.js +4 -4
- app-ng-runtime/locales/angular/global/ar-eh.js +4 -4
- app-ng-runtime/locales/angular/global/ar-er.js +4 -4
- app-ng-runtime/locales/angular/global/ar-il.js +4 -4
- app-ng-runtime/locales/angular/global/ar-iq.js +4 -4
- app-ng-runtime/locales/angular/global/ar-jo.js +4 -4
- app-ng-runtime/locales/angular/global/ar-km.js +4 -4
- app-ng-runtime/locales/angular/global/ar-kw.js +4 -4
- app-ng-runtime/locales/angular/global/ar-lb.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ly.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ma.js +4 -4
- app-ng-runtime/locales/angular/global/ar-mr.js +4 -4
- app-ng-runtime/locales/angular/global/ar-om.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ps.js +4 -4
- app-ng-runtime/locales/angular/global/ar-qa.js +4 -4
- app-ng-runtime/locales/angular/global/ar-sa.js +4 -4
- app-ng-runtime/locales/angular/global/ar-sd.js +4 -4
- app-ng-runtime/locales/angular/global/ar-so.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ss.js +4 -4
- app-ng-runtime/locales/angular/global/ar-sy.js +4 -4
- app-ng-runtime/locales/angular/global/ar-td.js +4 -4
- app-ng-runtime/locales/angular/global/ar-tn.js +4 -4
- app-ng-runtime/locales/angular/global/ar-ye.js +4 -4
- app-ng-runtime/locales/angular/global/ar.js +4 -4
- app-ng-runtime/locales/angular/global/as.js +4 -4
- app-ng-runtime/locales/angular/global/asa.js +4 -4
- app-ng-runtime/locales/angular/global/ast.js +4 -4
- app-ng-runtime/locales/angular/global/az-cyrl.js +4 -4
- app-ng-runtime/locales/angular/global/az-latn.js +4 -4
- app-ng-runtime/locales/angular/global/az.js +4 -4
- app-ng-runtime/locales/angular/global/bas.js +4 -4
- app-ng-runtime/locales/angular/global/be-tarask.js +4 -4
- app-ng-runtime/locales/angular/global/be.js +4 -4
- app-ng-runtime/locales/angular/global/bem.js +4 -4
- app-ng-runtime/locales/angular/global/bez.js +4 -4
- app-ng-runtime/locales/angular/global/bg.js +4 -4
- app-ng-runtime/locales/angular/global/bm.js +4 -4
- app-ng-runtime/locales/angular/global/bn-in.js +4 -4
- app-ng-runtime/locales/angular/global/bn.js +4 -4
- app-ng-runtime/locales/angular/global/bo-in.js +4 -4
- app-ng-runtime/locales/angular/global/bo.js +4 -4
- app-ng-runtime/locales/angular/global/br.js +4 -4
- app-ng-runtime/locales/angular/global/brx.js +4 -4
- app-ng-runtime/locales/angular/global/bs-cyrl.js +4 -4
- app-ng-runtime/locales/angular/global/bs-latn.js +4 -4
- app-ng-runtime/locales/angular/global/bs.js +4 -4
- app-ng-runtime/locales/angular/global/ca-ad.js +4 -4
- app-ng-runtime/locales/angular/global/ca-es-valencia.js +4 -4
- app-ng-runtime/locales/angular/global/ca-fr.js +4 -4
- app-ng-runtime/locales/angular/global/ca-it.js +4 -4
- app-ng-runtime/locales/angular/global/ca.js +4 -4
- app-ng-runtime/locales/angular/global/ccp-in.js +4 -4
- app-ng-runtime/locales/angular/global/ccp.js +4 -4
- app-ng-runtime/locales/angular/global/ce.js +4 -4
- app-ng-runtime/locales/angular/global/ceb.js +4 -4
- app-ng-runtime/locales/angular/global/cgg.js +4 -4
- app-ng-runtime/locales/angular/global/chr.js +4 -4
- app-ng-runtime/locales/angular/global/ckb-ir.js +4 -4
- app-ng-runtime/locales/angular/global/ckb.js +4 -4
- app-ng-runtime/locales/angular/global/cs.js +4 -4
- app-ng-runtime/locales/angular/global/cy.js +4 -4
- app-ng-runtime/locales/angular/global/da-gl.js +4 -4
- app-ng-runtime/locales/angular/global/da.js +4 -4
- app-ng-runtime/locales/angular/global/dav.js +4 -4
- app-ng-runtime/locales/angular/global/de-at.js +4 -4
- app-ng-runtime/locales/angular/global/de-be.js +4 -4
- app-ng-runtime/locales/angular/global/de-ch.js +4 -4
- app-ng-runtime/locales/angular/global/de-it.js +4 -4
- app-ng-runtime/locales/angular/global/de-li.js +4 -4
- app-ng-runtime/locales/angular/global/de-lu.js +4 -4
- app-ng-runtime/locales/angular/global/de.js +4 -4
- app-ng-runtime/locales/angular/global/dje.js +4 -4
- app-ng-runtime/locales/angular/global/doi.js +4 -4
- app-ng-runtime/locales/angular/global/dsb.js +4 -4
- app-ng-runtime/locales/angular/global/dua.js +4 -4
- app-ng-runtime/locales/angular/global/dyo.js +4 -4
- app-ng-runtime/locales/angular/global/dz.js +4 -4
- app-ng-runtime/locales/angular/global/ebu.js +4 -4
- app-ng-runtime/locales/angular/global/ee-tg.js +4 -4
- app-ng-runtime/locales/angular/global/ee.js +4 -4
- app-ng-runtime/locales/angular/global/el-cy.js +4 -4
- app-ng-runtime/locales/angular/global/el.js +4 -4
- app-ng-runtime/locales/angular/global/en-001.js +4 -4
- app-ng-runtime/locales/angular/global/en-150.js +4 -4
- app-ng-runtime/locales/angular/global/en-ae.js +4 -4
- app-ng-runtime/locales/angular/global/en-ag.js +4 -4
- app-ng-runtime/locales/angular/global/en-ai.js +4 -4
- app-ng-runtime/locales/angular/global/en-as.js +4 -4
- app-ng-runtime/locales/angular/global/en-at.js +4 -4
- app-ng-runtime/locales/angular/global/en-au.js +4 -4
- app-ng-runtime/locales/angular/global/en-bb.js +4 -4
- app-ng-runtime/locales/angular/global/en-be.js +4 -4
- app-ng-runtime/locales/angular/global/en-bi.js +4 -4
- app-ng-runtime/locales/angular/global/en-bm.js +4 -4
- app-ng-runtime/locales/angular/global/en-bs.js +4 -4
- app-ng-runtime/locales/angular/global/en-bw.js +4 -4
- app-ng-runtime/locales/angular/global/en-bz.js +4 -4
- app-ng-runtime/locales/angular/global/en-ca.js +4 -4
- app-ng-runtime/locales/angular/global/en-cc.js +4 -4
- app-ng-runtime/locales/angular/global/en-ch.js +4 -4
- app-ng-runtime/locales/angular/global/en-ck.js +4 -4
- app-ng-runtime/locales/angular/global/en-cm.js +4 -4
- app-ng-runtime/locales/angular/global/en-cx.js +4 -4
- app-ng-runtime/locales/angular/global/en-cy.js +4 -4
- app-ng-runtime/locales/angular/global/en-de.js +4 -4
- app-ng-runtime/locales/angular/global/en-dg.js +4 -4
- app-ng-runtime/locales/angular/global/en-dk.js +4 -4
- app-ng-runtime/locales/angular/global/en-dm.js +4 -4
- app-ng-runtime/locales/angular/global/en-er.js +4 -4
- app-ng-runtime/locales/angular/global/en-fi.js +4 -4
- app-ng-runtime/locales/angular/global/en-fj.js +4 -4
- app-ng-runtime/locales/angular/global/en-fk.js +4 -4
- app-ng-runtime/locales/angular/global/en-fm.js +4 -4
- app-ng-runtime/locales/angular/global/en-gb.js +4 -4
- app-ng-runtime/locales/angular/global/en-gd.js +4 -4
- app-ng-runtime/locales/angular/global/en-gg.js +4 -4
- app-ng-runtime/locales/angular/global/en-gh.js +4 -4
- app-ng-runtime/locales/angular/global/en-gi.js +4 -4
- app-ng-runtime/locales/angular/global/en-gm.js +4 -4
- app-ng-runtime/locales/angular/global/en-gu.js +4 -4
- app-ng-runtime/locales/angular/global/en-gy.js +4 -4
- app-ng-runtime/locales/angular/global/en-hk.js +4 -4
- app-ng-runtime/locales/angular/global/en-ie.js +4 -4
- app-ng-runtime/locales/angular/global/en-il.js +4 -4
- app-ng-runtime/locales/angular/global/en-im.js +4 -4
- app-ng-runtime/locales/angular/global/en-in.js +4 -4
- app-ng-runtime/locales/angular/global/en-io.js +4 -4
- app-ng-runtime/locales/angular/global/en-je.js +4 -4
- app-ng-runtime/locales/angular/global/en-jm.js +4 -4
- app-ng-runtime/locales/angular/global/en-ke.js +4 -4
- app-ng-runtime/locales/angular/global/en-ki.js +4 -4
- app-ng-runtime/locales/angular/global/en-kn.js +4 -4
- app-ng-runtime/locales/angular/global/en-ky.js +4 -4
- app-ng-runtime/locales/angular/global/en-lc.js +4 -4
- app-ng-runtime/locales/angular/global/en-lr.js +4 -4
- app-ng-runtime/locales/angular/global/en-ls.js +4 -4
- app-ng-runtime/locales/angular/global/en-mg.js +4 -4
- app-ng-runtime/locales/angular/global/en-mh.js +4 -4
- app-ng-runtime/locales/angular/global/en-mo.js +4 -4
- app-ng-runtime/locales/angular/global/en-mp.js +4 -4
- app-ng-runtime/locales/angular/global/en-ms.js +4 -4
- app-ng-runtime/locales/angular/global/en-mt.js +4 -4
- app-ng-runtime/locales/angular/global/en-mu.js +4 -4
- app-ng-runtime/locales/angular/global/en-mv.js +4 -4
- app-ng-runtime/locales/angular/global/en-mw.js +4 -4
- app-ng-runtime/locales/angular/global/en-my.js +4 -4
- app-ng-runtime/locales/angular/global/en-na.js +4 -4
- app-ng-runtime/locales/angular/global/en-nf.js +4 -4
- app-ng-runtime/locales/angular/global/en-ng.js +4 -4
- app-ng-runtime/locales/angular/global/en-nl.js +4 -4
- app-ng-runtime/locales/angular/global/en-nr.js +4 -4
- app-ng-runtime/locales/angular/global/en-nu.js +4 -4
- app-ng-runtime/locales/angular/global/en-nz.js +4 -4
- app-ng-runtime/locales/angular/global/en-pg.js +4 -4
- app-ng-runtime/locales/angular/global/en-ph.js +4 -4
- app-ng-runtime/locales/angular/global/en-pk.js +4 -4
- app-ng-runtime/locales/angular/global/en-pn.js +4 -4
- app-ng-runtime/locales/angular/global/en-pr.js +4 -4
- app-ng-runtime/locales/angular/global/en-pw.js +4 -4
- app-ng-runtime/locales/angular/global/en-rw.js +4 -4
- app-ng-runtime/locales/angular/global/en-sb.js +4 -4
- app-ng-runtime/locales/angular/global/en-sc.js +4 -4
- app-ng-runtime/locales/angular/global/en-sd.js +4 -4
- app-ng-runtime/locales/angular/global/en-se.js +4 -4
- app-ng-runtime/locales/angular/global/en-sg.js +4 -4
- app-ng-runtime/locales/angular/global/en-sh.js +4 -4
- app-ng-runtime/locales/angular/global/en-si.js +4 -4
- app-ng-runtime/locales/angular/global/en-sl.js +4 -4
- app-ng-runtime/locales/angular/global/en-ss.js +4 -4
- app-ng-runtime/locales/angular/global/en-sx.js +4 -4
- app-ng-runtime/locales/angular/global/en-sz.js +4 -4
- app-ng-runtime/locales/angular/global/en-tc.js +4 -4
- app-ng-runtime/locales/angular/global/en-tk.js +4 -4
- app-ng-runtime/locales/angular/global/en-to.js +4 -4
- app-ng-runtime/locales/angular/global/en-tt.js +4 -4
- app-ng-runtime/locales/angular/global/en-tv.js +4 -4
- app-ng-runtime/locales/angular/global/en-tz.js +4 -4
- app-ng-runtime/locales/angular/global/en-ug.js +4 -4
- app-ng-runtime/locales/angular/global/en-um.js +4 -4
- app-ng-runtime/locales/angular/global/en-vc.js +4 -4
- app-ng-runtime/locales/angular/global/en-vg.js +4 -4
- app-ng-runtime/locales/angular/global/en-vi.js +4 -4
- app-ng-runtime/locales/angular/global/en-vu.js +4 -4
- app-ng-runtime/locales/angular/global/en-ws.js +4 -4
- app-ng-runtime/locales/angular/global/en-za.js +4 -4
- app-ng-runtime/locales/angular/global/en-zm.js +4 -4
- app-ng-runtime/locales/angular/global/en-zw.js +4 -4
- app-ng-runtime/locales/angular/global/en.js +4 -4
- app-ng-runtime/locales/angular/global/eo.js +4 -4
- app-ng-runtime/locales/angular/global/es-419.js +4 -4
- app-ng-runtime/locales/angular/global/es-ar.js +4 -4
- app-ng-runtime/locales/angular/global/es-bo.js +4 -4
- app-ng-runtime/locales/angular/global/es-br.js +4 -4
- app-ng-runtime/locales/angular/global/es-bz.js +4 -4
- app-ng-runtime/locales/angular/global/es-cl.js +4 -4
- app-ng-runtime/locales/angular/global/es-co.js +4 -4
- app-ng-runtime/locales/angular/global/es-cr.js +4 -4
- app-ng-runtime/locales/angular/global/es-cu.js +4 -4
- app-ng-runtime/locales/angular/global/es-do.js +4 -4
- app-ng-runtime/locales/angular/global/es-ea.js +4 -4
- app-ng-runtime/locales/angular/global/es-ec.js +4 -4
- app-ng-runtime/locales/angular/global/es-gq.js +4 -4
- app-ng-runtime/locales/angular/global/es-gt.js +4 -4
- app-ng-runtime/locales/angular/global/es-hn.js +4 -4
- app-ng-runtime/locales/angular/global/es-ic.js +4 -4
- app-ng-runtime/locales/angular/global/es-mx.js +4 -4
- app-ng-runtime/locales/angular/global/es-ni.js +4 -4
- app-ng-runtime/locales/angular/global/es-pa.js +4 -4
- app-ng-runtime/locales/angular/global/es-pe.js +4 -4
- app-ng-runtime/locales/angular/global/es-ph.js +4 -4
- app-ng-runtime/locales/angular/global/es-pr.js +4 -4
- app-ng-runtime/locales/angular/global/es-py.js +4 -4
- app-ng-runtime/locales/angular/global/es-sv.js +4 -4
- app-ng-runtime/locales/angular/global/es-us.js +4 -4
- app-ng-runtime/locales/angular/global/es-uy.js +4 -4
- app-ng-runtime/locales/angular/global/es-ve.js +4 -4
- app-ng-runtime/locales/angular/global/es.js +4 -4
- app-ng-runtime/locales/angular/global/et.js +4 -4
- app-ng-runtime/locales/angular/global/eu.js +4 -4
- app-ng-runtime/locales/angular/global/ewo.js +4 -4
- app-ng-runtime/locales/angular/global/fa-af.js +4 -4
- app-ng-runtime/locales/angular/global/fa.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-bf.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-cm.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-gh.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-gm.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-gw.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-lr.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-mr.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-ne.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-ng.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-sl.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm-sn.js +4 -4
- app-ng-runtime/locales/angular/global/ff-adlm.js +4 -4
- app-ng-runtime/locales/angular/global/ff-cm.js +58 -44
- app-ng-runtime/locales/angular/global/ff-gn.js +58 -44
- app-ng-runtime/locales/angular/global/ff-latn-bf.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-cm.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-gh.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-gm.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-gn.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-gw.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-lr.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-mr.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-ne.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-ng.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn-sl.js +4 -4
- app-ng-runtime/locales/angular/global/ff-latn.js +4 -4
- app-ng-runtime/locales/angular/global/ff-mr.js +58 -44
- app-ng-runtime/locales/angular/global/ff.js +4 -4
- app-ng-runtime/locales/angular/global/fi.js +4 -4
- app-ng-runtime/locales/angular/global/fil.js +4 -4
- app-ng-runtime/locales/angular/global/fo-dk.js +4 -4
- app-ng-runtime/locales/angular/global/fo.js +4 -4
- app-ng-runtime/locales/angular/global/fr-be.js +4 -4
- app-ng-runtime/locales/angular/global/fr-bf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-bi.js +4 -4
- app-ng-runtime/locales/angular/global/fr-bj.js +4 -4
- app-ng-runtime/locales/angular/global/fr-bl.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ca.js +4 -4
- app-ng-runtime/locales/angular/global/fr-cd.js +4 -4
- app-ng-runtime/locales/angular/global/fr-cf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-cg.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ch.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ci.js +4 -4
- app-ng-runtime/locales/angular/global/fr-cm.js +4 -4
- app-ng-runtime/locales/angular/global/fr-dj.js +4 -4
- app-ng-runtime/locales/angular/global/fr-dz.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ga.js +4 -4
- app-ng-runtime/locales/angular/global/fr-gf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-gn.js +4 -4
- app-ng-runtime/locales/angular/global/fr-gp.js +4 -4
- app-ng-runtime/locales/angular/global/fr-gq.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ht.js +4 -4
- app-ng-runtime/locales/angular/global/fr-km.js +4 -4
- app-ng-runtime/locales/angular/global/fr-lu.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ma.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mc.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mg.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ml.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mq.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mr.js +4 -4
- app-ng-runtime/locales/angular/global/fr-mu.js +4 -4
- app-ng-runtime/locales/angular/global/fr-nc.js +4 -4
- app-ng-runtime/locales/angular/global/fr-ne.js +4 -4
- app-ng-runtime/locales/angular/global/fr-pf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-pm.js +4 -4
- app-ng-runtime/locales/angular/global/fr-re.js +4 -4
- app-ng-runtime/locales/angular/global/fr-rw.js +4 -4
- app-ng-runtime/locales/angular/global/fr-sc.js +4 -4
- app-ng-runtime/locales/angular/global/fr-sn.js +4 -4
- app-ng-runtime/locales/angular/global/fr-sy.js +4 -4
- app-ng-runtime/locales/angular/global/fr-td.js +4 -4
- app-ng-runtime/locales/angular/global/fr-tg.js +4 -4
- app-ng-runtime/locales/angular/global/fr-tn.js +4 -4
- app-ng-runtime/locales/angular/global/fr-vu.js +4 -4
- app-ng-runtime/locales/angular/global/fr-wf.js +4 -4
- app-ng-runtime/locales/angular/global/fr-yt.js +4 -4
- app-ng-runtime/locales/angular/global/fr.js +4 -4
- app-ng-runtime/locales/angular/global/fur.js +4 -4
- app-ng-runtime/locales/angular/global/fy.js +4 -4
- app-ng-runtime/locales/angular/global/ga-gb.js +4 -4
- app-ng-runtime/locales/angular/global/ga.js +4 -4
- app-ng-runtime/locales/angular/global/gd.js +4 -4
- app-ng-runtime/locales/angular/global/gl.js +4 -4
- app-ng-runtime/locales/angular/global/gsw-fr.js +4 -4
- app-ng-runtime/locales/angular/global/gsw-li.js +4 -4
- app-ng-runtime/locales/angular/global/gsw.js +4 -4
- app-ng-runtime/locales/angular/global/gu.js +4 -4
- app-ng-runtime/locales/angular/global/guz.js +4 -4
- app-ng-runtime/locales/angular/global/gv.js +4 -4
- app-ng-runtime/locales/angular/global/ha-gh.js +4 -4
- app-ng-runtime/locales/angular/global/ha-ne.js +4 -4
- app-ng-runtime/locales/angular/global/ha.js +4 -4
- app-ng-runtime/locales/angular/global/haw.js +4 -4
- app-ng-runtime/locales/angular/global/he.js +4 -4
- app-ng-runtime/locales/angular/global/hi-latn.js +4 -4
- app-ng-runtime/locales/angular/global/hi.js +4 -4
- app-ng-runtime/locales/angular/global/hr-ba.js +4 -4
- app-ng-runtime/locales/angular/global/hr.js +4 -4
- app-ng-runtime/locales/angular/global/hsb.js +4 -4
- app-ng-runtime/locales/angular/global/hu.js +4 -4
- app-ng-runtime/locales/angular/global/hy.js +4 -4
- app-ng-runtime/locales/angular/global/ia.js +4 -4
- app-ng-runtime/locales/angular/global/id.js +4 -4
- app-ng-runtime/locales/angular/global/ig.js +4 -4
- app-ng-runtime/locales/angular/global/ii.js +4 -4
- app-ng-runtime/locales/angular/global/is.js +4 -4
- app-ng-runtime/locales/angular/global/it-ch.js +4 -4
- app-ng-runtime/locales/angular/global/it-sm.js +4 -4
- app-ng-runtime/locales/angular/global/it-va.js +4 -4
- app-ng-runtime/locales/angular/global/it.js +4 -4
- app-ng-runtime/locales/angular/global/ja.js +4 -4
- app-ng-runtime/locales/angular/global/jgo.js +4 -4
- app-ng-runtime/locales/angular/global/jmc.js +4 -4
- app-ng-runtime/locales/angular/global/jv.js +4 -4
- app-ng-runtime/locales/angular/global/ka.js +4 -4
- app-ng-runtime/locales/angular/global/kab.js +4 -4
- app-ng-runtime/locales/angular/global/kam.js +4 -4
- app-ng-runtime/locales/angular/global/kde.js +4 -4
- app-ng-runtime/locales/angular/global/kea.js +4 -4
- app-ng-runtime/locales/angular/global/kgp.js +4 -4
- app-ng-runtime/locales/angular/global/khq.js +4 -4
- app-ng-runtime/locales/angular/global/ki.js +4 -4
- app-ng-runtime/locales/angular/global/kk.js +4 -4
- app-ng-runtime/locales/angular/global/kkj.js +4 -4
- app-ng-runtime/locales/angular/global/kl.js +4 -4
- app-ng-runtime/locales/angular/global/kln.js +4 -4
- app-ng-runtime/locales/angular/global/km.js +4 -4
- app-ng-runtime/locales/angular/global/kn.js +4 -4
- app-ng-runtime/locales/angular/global/ko-kp.js +4 -4
- app-ng-runtime/locales/angular/global/ko.js +4 -4
- app-ng-runtime/locales/angular/global/kok.js +4 -4
- app-ng-runtime/locales/angular/global/ks-arab.js +4 -4
- app-ng-runtime/locales/angular/global/ks-deva.js +4 -4
- app-ng-runtime/locales/angular/global/ks.js +4 -4
- app-ng-runtime/locales/angular/global/ksb.js +4 -4
- app-ng-runtime/locales/angular/global/ksf.js +4 -4
- app-ng-runtime/locales/angular/global/ksh.js +4 -4
- app-ng-runtime/locales/angular/global/ku.js +4 -4
- app-ng-runtime/locales/angular/global/kw.js +4 -4
- app-ng-runtime/locales/angular/global/ky.js +4 -4
- app-ng-runtime/locales/angular/global/lag.js +4 -4
- app-ng-runtime/locales/angular/global/lb.js +4 -4
- app-ng-runtime/locales/angular/global/lg.js +4 -4
- app-ng-runtime/locales/angular/global/lkt.js +4 -4
- app-ng-runtime/locales/angular/global/ln-ao.js +4 -4
- app-ng-runtime/locales/angular/global/ln-cf.js +4 -4
- app-ng-runtime/locales/angular/global/ln-cg.js +4 -4
- app-ng-runtime/locales/angular/global/ln.js +4 -4
- app-ng-runtime/locales/angular/global/lo.js +4 -4
- app-ng-runtime/locales/angular/global/lrc-iq.js +4 -4
- app-ng-runtime/locales/angular/global/lrc.js +4 -4
- app-ng-runtime/locales/angular/global/lt.js +4 -4
- app-ng-runtime/locales/angular/global/lu.js +4 -4
- app-ng-runtime/locales/angular/global/luo.js +4 -4
- app-ng-runtime/locales/angular/global/luy.js +4 -4
- app-ng-runtime/locales/angular/global/lv.js +4 -4
- app-ng-runtime/locales/angular/global/mai.js +4 -4
- app-ng-runtime/locales/angular/global/mas-tz.js +4 -4
- app-ng-runtime/locales/angular/global/mas.js +4 -4
- app-ng-runtime/locales/angular/global/mer.js +4 -4
- app-ng-runtime/locales/angular/global/mfe.js +4 -4
- app-ng-runtime/locales/angular/global/mg.js +4 -4
- app-ng-runtime/locales/angular/global/mgh.js +4 -4
- app-ng-runtime/locales/angular/global/mgo.js +4 -4
- app-ng-runtime/locales/angular/global/mi.js +4 -4
- app-ng-runtime/locales/angular/global/mk.js +4 -4
- app-ng-runtime/locales/angular/global/ml.js +4 -4
- app-ng-runtime/locales/angular/global/mn.js +4 -4
- app-ng-runtime/locales/angular/global/mni-beng.js +4 -4
- app-ng-runtime/locales/angular/global/mni.js +4 -4
- app-ng-runtime/locales/angular/global/mr.js +4 -4
- app-ng-runtime/locales/angular/global/ms-bn.js +4 -4
- app-ng-runtime/locales/angular/global/ms-id.js +4 -4
- app-ng-runtime/locales/angular/global/ms-sg.js +4 -4
- app-ng-runtime/locales/angular/global/ms.js +4 -4
- app-ng-runtime/locales/angular/global/mt.js +4 -4
- app-ng-runtime/locales/angular/global/mua.js +4 -4
- app-ng-runtime/locales/angular/global/my.js +4 -4
- app-ng-runtime/locales/angular/global/mzn.js +4 -4
- app-ng-runtime/locales/angular/global/naq.js +4 -4
- app-ng-runtime/locales/angular/global/nb-sj.js +4 -4
- app-ng-runtime/locales/angular/global/nb.js +4 -4
- app-ng-runtime/locales/angular/global/nd.js +4 -4
- app-ng-runtime/locales/angular/global/nds-nl.js +4 -4
- app-ng-runtime/locales/angular/global/nds.js +4 -4
- app-ng-runtime/locales/angular/global/ne-in.js +4 -4
- app-ng-runtime/locales/angular/global/ne.js +4 -4
- app-ng-runtime/locales/angular/global/nl-aw.js +4 -4
- app-ng-runtime/locales/angular/global/nl-be.js +4 -4
- app-ng-runtime/locales/angular/global/nl-bq.js +4 -4
- app-ng-runtime/locales/angular/global/nl-cw.js +4 -4
- app-ng-runtime/locales/angular/global/nl-sr.js +4 -4
- app-ng-runtime/locales/angular/global/nl-sx.js +4 -4
- app-ng-runtime/locales/angular/global/nl.js +4 -4
- app-ng-runtime/locales/angular/global/nmg.js +4 -4
- app-ng-runtime/locales/angular/global/nn.js +4 -4
- app-ng-runtime/locales/angular/global/nnh.js +4 -4
- app-ng-runtime/locales/angular/global/no.js +4 -4
- app-ng-runtime/locales/angular/global/nus.js +4 -4
- app-ng-runtime/locales/angular/global/nyn.js +4 -4
- app-ng-runtime/locales/angular/global/om-ke.js +4 -4
- app-ng-runtime/locales/angular/global/om.js +4 -4
- app-ng-runtime/locales/angular/global/or.js +4 -4
- app-ng-runtime/locales/angular/global/os-ru.js +4 -4
- app-ng-runtime/locales/angular/global/os.js +4 -4
- app-ng-runtime/locales/angular/global/pa-arab.js +4 -4
- app-ng-runtime/locales/angular/global/pa-guru.js +4 -4
- app-ng-runtime/locales/angular/global/pa.js +4 -4
- app-ng-runtime/locales/angular/global/pcm.js +4 -4
- app-ng-runtime/locales/angular/global/pl.js +4 -4
- app-ng-runtime/locales/angular/global/ps-pk.js +4 -4
- app-ng-runtime/locales/angular/global/ps.js +4 -4
- app-ng-runtime/locales/angular/global/pt-ao.js +4 -4
- app-ng-runtime/locales/angular/global/pt-ch.js +4 -4
- app-ng-runtime/locales/angular/global/pt-cv.js +4 -4
- app-ng-runtime/locales/angular/global/pt-gq.js +4 -4
- app-ng-runtime/locales/angular/global/pt-gw.js +4 -4
- app-ng-runtime/locales/angular/global/pt-lu.js +4 -4
- app-ng-runtime/locales/angular/global/pt-mo.js +4 -4
- app-ng-runtime/locales/angular/global/pt-mz.js +4 -4
- app-ng-runtime/locales/angular/global/pt-pt.js +4 -4
- app-ng-runtime/locales/angular/global/pt-st.js +4 -4
- app-ng-runtime/locales/angular/global/pt-tl.js +4 -4
- app-ng-runtime/locales/angular/global/pt.js +4 -4
- app-ng-runtime/locales/angular/global/qu-bo.js +4 -4
- app-ng-runtime/locales/angular/global/qu-ec.js +4 -4
- app-ng-runtime/locales/angular/global/qu.js +4 -4
- app-ng-runtime/locales/angular/global/rm.js +4 -4
- app-ng-runtime/locales/angular/global/rn.js +4 -4
- app-ng-runtime/locales/angular/global/ro-md.js +4 -4
- app-ng-runtime/locales/angular/global/ro.js +4 -4
- app-ng-runtime/locales/angular/global/rof.js +4 -4
- app-ng-runtime/locales/angular/global/ru-by.js +4 -4
- app-ng-runtime/locales/angular/global/ru-kg.js +4 -4
- app-ng-runtime/locales/angular/global/ru-kz.js +4 -4
- app-ng-runtime/locales/angular/global/ru-md.js +4 -4
- app-ng-runtime/locales/angular/global/ru-ua.js +4 -4
- app-ng-runtime/locales/angular/global/ru.js +4 -4
- app-ng-runtime/locales/angular/global/rw.js +4 -4
- app-ng-runtime/locales/angular/global/rwk.js +4 -4
- app-ng-runtime/locales/angular/global/sa.js +4 -4
- app-ng-runtime/locales/angular/global/sah.js +4 -4
- app-ng-runtime/locales/angular/global/saq.js +4 -4
- app-ng-runtime/locales/angular/global/sat-olck.js +4 -4
- app-ng-runtime/locales/angular/global/sat.js +4 -4
- app-ng-runtime/locales/angular/global/sbp.js +4 -4
- app-ng-runtime/locales/angular/global/sc.js +4 -4
- app-ng-runtime/locales/angular/global/sd-arab.js +4 -4
- app-ng-runtime/locales/angular/global/sd-deva.js +4 -4
- app-ng-runtime/locales/angular/global/sd.js +4 -4
- app-ng-runtime/locales/angular/global/se-fi.js +4 -4
- app-ng-runtime/locales/angular/global/se-se.js +4 -4
- app-ng-runtime/locales/angular/global/se.js +4 -4
- app-ng-runtime/locales/angular/global/seh.js +4 -4
- app-ng-runtime/locales/angular/global/ses.js +4 -4
- app-ng-runtime/locales/angular/global/sg.js +4 -4
- app-ng-runtime/locales/angular/global/shi-latn.js +4 -4
- app-ng-runtime/locales/angular/global/shi-tfng.js +4 -4
- app-ng-runtime/locales/angular/global/shi.js +4 -4
- app-ng-runtime/locales/angular/global/si.js +4 -4
- app-ng-runtime/locales/angular/global/sk.js +4 -4
- app-ng-runtime/locales/angular/global/sl.js +4 -4
- app-ng-runtime/locales/angular/global/smn.js +4 -4
- app-ng-runtime/locales/angular/global/sn.js +4 -4
- app-ng-runtime/locales/angular/global/so-dj.js +4 -4
- app-ng-runtime/locales/angular/global/so-et.js +4 -4
- app-ng-runtime/locales/angular/global/so-ke.js +4 -4
- app-ng-runtime/locales/angular/global/so.js +4 -4
- app-ng-runtime/locales/angular/global/sq-mk.js +4 -4
- app-ng-runtime/locales/angular/global/sq-xk.js +4 -4
- app-ng-runtime/locales/angular/global/sq.js +4 -4
- app-ng-runtime/locales/angular/global/sr-cyrl-ba.js +4 -4
- app-ng-runtime/locales/angular/global/sr-cyrl-me.js +4 -4
- app-ng-runtime/locales/angular/global/sr-cyrl-xk.js +4 -4
- app-ng-runtime/locales/angular/global/sr-cyrl.js +4 -4
- app-ng-runtime/locales/angular/global/sr-latn-ba.js +4 -4
- app-ng-runtime/locales/angular/global/sr-latn-me.js +4 -4
- app-ng-runtime/locales/angular/global/sr-latn-xk.js +4 -4
- app-ng-runtime/locales/angular/global/sr-latn.js +4 -4
- app-ng-runtime/locales/angular/global/sr.js +4 -4
- app-ng-runtime/locales/angular/global/su-latn.js +4 -4
- app-ng-runtime/locales/angular/global/su.js +4 -4
- app-ng-runtime/locales/angular/global/sv-ax.js +4 -4
- app-ng-runtime/locales/angular/global/sv-fi.js +4 -4
- app-ng-runtime/locales/angular/global/sv.js +4 -4
- app-ng-runtime/locales/angular/global/sw-cd.js +4 -4
- app-ng-runtime/locales/angular/global/sw-ke.js +4 -4
- app-ng-runtime/locales/angular/global/sw-ug.js +4 -4
- app-ng-runtime/locales/angular/global/sw.js +4 -4
- app-ng-runtime/locales/angular/global/ta-lk.js +4 -4
- app-ng-runtime/locales/angular/global/ta-my.js +4 -4
- app-ng-runtime/locales/angular/global/ta-sg.js +4 -4
- app-ng-runtime/locales/angular/global/ta.js +4 -4
- app-ng-runtime/locales/angular/global/te.js +4 -4
- app-ng-runtime/locales/angular/global/teo-ke.js +4 -4
- app-ng-runtime/locales/angular/global/teo.js +4 -4
- app-ng-runtime/locales/angular/global/tg.js +4 -4
- app-ng-runtime/locales/angular/global/th.js +4 -4
- app-ng-runtime/locales/angular/global/ti-er.js +4 -4
- app-ng-runtime/locales/angular/global/ti.js +4 -4
- app-ng-runtime/locales/angular/global/tk.js +4 -4
- app-ng-runtime/locales/angular/global/to.js +4 -4
- app-ng-runtime/locales/angular/global/tr-cy.js +4 -4
- app-ng-runtime/locales/angular/global/tr.js +4 -4
- app-ng-runtime/locales/angular/global/tt.js +4 -4
- app-ng-runtime/locales/angular/global/twq.js +4 -4
- app-ng-runtime/locales/angular/global/tzm.js +4 -4
- app-ng-runtime/locales/angular/global/ug.js +4 -4
- app-ng-runtime/locales/angular/global/uk.js +4 -4
- app-ng-runtime/locales/angular/global/und.js +4 -4
- app-ng-runtime/locales/angular/global/ur-in.js +4 -4
- app-ng-runtime/locales/angular/global/ur.js +4 -4
- app-ng-runtime/locales/angular/global/uz-arab.js +4 -4
- app-ng-runtime/locales/angular/global/uz-cyrl.js +4 -4
- app-ng-runtime/locales/angular/global/uz-latn.js +4 -4
- app-ng-runtime/locales/angular/global/uz.js +4 -4
- app-ng-runtime/locales/angular/global/vai-latn.js +4 -4
- app-ng-runtime/locales/angular/global/vai-vaii.js +4 -4
- app-ng-runtime/locales/angular/global/vai.js +4 -4
- app-ng-runtime/locales/angular/global/vi.js +4 -4
- app-ng-runtime/locales/angular/global/vun.js +4 -4
- app-ng-runtime/locales/angular/global/wae.js +4 -4
- app-ng-runtime/locales/angular/global/wo.js +4 -4
- app-ng-runtime/locales/angular/global/xh.js +4 -4
- app-ng-runtime/locales/angular/global/xog.js +4 -4
- app-ng-runtime/locales/angular/global/yav.js +4 -4
- app-ng-runtime/locales/angular/global/yi.js +4 -4
- app-ng-runtime/locales/angular/global/yo-bj.js +4 -4
- app-ng-runtime/locales/angular/global/yo.js +4 -4
- app-ng-runtime/locales/angular/global/yrl-co.js +4 -4
- app-ng-runtime/locales/angular/global/yrl-ve.js +4 -4
- app-ng-runtime/locales/angular/global/yrl.js +4 -4
- app-ng-runtime/locales/angular/global/yue-hans.js +4 -4
- app-ng-runtime/locales/angular/global/yue-hant.js +4 -4
- app-ng-runtime/locales/angular/global/yue.js +4 -4
- app-ng-runtime/locales/angular/global/zgh.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hans-hk.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hans-mo.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hans-sg.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hans.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hant-hk.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hant-mo.js +4 -4
- app-ng-runtime/locales/angular/global/zh-hant.js +4 -4
- app-ng-runtime/locales/angular/global/zh.js +4 -4
- app-ng-runtime/locales/angular/global/zu.js +4 -4
- app-ng-runtime/mobile/components/basic/default/.npmignore +2 -0
- app-ng-runtime/mobile/components/basic/default/bundles/index.umd.js +148 -143
- app-ng-runtime/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +8 -7
- app-ng-runtime/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +7 -6
- app-ng-runtime/mobile/components/basic/default/esm2022/basic.module.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +47 -43
- app-ng-runtime/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +7 -5
- app-ng-runtime/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +6 -5
- app-ng-runtime/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +49 -47
- app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +2 -2
- app-ng-runtime/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +31 -32
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs +146 -140
- app-ng-runtime/mobile/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +2 -2
- app-ng-runtime/mobile/components/basic/search/.npmignore +2 -0
- app-ng-runtime/mobile/components/basic/search/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/basic/search/esm2022/search.directive.mjs +3 -3
- app-ng-runtime/mobile/components/basic/search/esm2022/search.module.mjs +2 -2
- app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/containers/segmented-control/.npmignore +2 -0
- app-ng-runtime/mobile/components/containers/segmented-control/bundles/index.umd.js +42 -30
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +14 -8
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +28 -21
- app-ng-runtime/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs +41 -28
- app-ng-runtime/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +2 -2
- app-ng-runtime/mobile/components/containers/segmented-control/segmented-control.component.d.ts +2 -2
- app-ng-runtime/mobile/components/data/media-list/.npmignore +2 -0
- app-ng-runtime/mobile/components/data/media-list/bundles/index.umd.js +53 -48
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +2 -2
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.component.mjs +48 -42
- app-ng-runtime/mobile/components/data/media-list/esm2022/media-list.module.mjs +2 -2
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs +50 -44
- app-ng-runtime/mobile/components/data/media-list/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/data/media-list/media-list.component.d.ts +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/.npmignore +2 -0
- app-ng-runtime/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +14 -8
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +15 -9
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +2 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +16 -10
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/camera/.npmignore +2 -0
- app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +15 -9
- app-ng-runtime/mobile/components/device/camera/camera.component.d.ts +2 -2
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.component.mjs +16 -10
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.module.mjs +2 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +17 -11
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/input/file-upload/.npmignore +2 -0
- app-ng-runtime/mobile/components/input/file-upload/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +3 -3
- app-ng-runtime/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +2 -2
- app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/default/.npmignore +2 -0
- app-ng-runtime/mobile/components/page/default/bundles/index.umd.js +11 -10
- app-ng-runtime/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +4 -3
- app-ng-runtime/mobile/components/page/default/esm2022/page.directive.mjs +5 -4
- app-ng-runtime/mobile/components/page/default/esm2022/page.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs +8 -6
- app-ng-runtime/mobile/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/left-panel/.npmignore +2 -0
- app-ng-runtime/mobile/components/page/left-panel/bundles/index.umd.js +3 -3
- app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +3 -3
- app-ng-runtime/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs +3 -3
- app-ng-runtime/mobile/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/mobile-navbar/.npmignore +2 -0
- app-ng-runtime/mobile/components/page/mobile-navbar/bundles/index.umd.js +40 -35
- app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +41 -36
- app-ng-runtime/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs +41 -36
- app-ng-runtime/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +2 -2
- app-ng-runtime/mobile/components/page/tab-bar/.npmignore +2 -0
- app-ng-runtime/mobile/components/page/tab-bar/bundles/index.umd.js +52 -46
- app-ng-runtime/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +2 -2
- app-ng-runtime/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +50 -43
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs +51 -44
- app-ng-runtime/mobile/components/page/tab-bar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/page/tab-bar/tabbar.component.d.ts +2 -2
- app-ng-runtime/mobile/core/.npmignore +2 -0
- app-ng-runtime/mobile/core/bundles/index.umd.js +43 -43
- app-ng-runtime/mobile/core/esm2022/core.module.mjs +3 -3
- app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +1 -1
- app-ng-runtime/mobile/core/esm2022/services/device-file-cache.service.mjs +3 -3
- app-ng-runtime/mobile/core/esm2022/services/device-file-download.service.mjs +7 -6
- app-ng-runtime/mobile/core/esm2022/services/device-file-opener.service.mjs +5 -4
- app-ng-runtime/mobile/core/esm2022/services/device-file-upload.service.mjs +6 -5
- app-ng-runtime/mobile/core/esm2022/services/device-file.service.mjs +8 -7
- app-ng-runtime/mobile/core/esm2022/services/device.service.mjs +5 -4
- app-ng-runtime/mobile/core/esm2022/services/ext-app-message.service.mjs +7 -6
- app-ng-runtime/mobile/core/esm2022/services/network.service.mjs +11 -10
- app-ng-runtime/mobile/core/fesm2022/index.mjs +40 -39
- app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/core/services/ext-app-message.service.d.ts +1 -1
- app-ng-runtime/mobile/core/services/network.service.d.ts +7 -1
- app-ng-runtime/mobile/offline/.npmignore +2 -0
- app-ng-runtime/mobile/offline/bundles/index.umd.js +176 -159
- app-ng-runtime/mobile/offline/esm2022/models/local-db-store.mjs +23 -21
- app-ng-runtime/mobile/offline/esm2022/offline.module.mjs +3 -3
- app-ng-runtime/mobile/offline/esm2022/services/change-log.service.mjs +9 -8
- app-ng-runtime/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +39 -37
- app-ng-runtime/mobile/offline/esm2022/services/local-db-management.service.mjs +56 -47
- app-ng-runtime/mobile/offline/esm2022/services/local-db.service.mjs +7 -6
- app-ng-runtime/mobile/offline/esm2022/services/local-key-value.service.mjs +2 -2
- app-ng-runtime/mobile/offline/esm2022/services/push.service.mjs +3 -3
- app-ng-runtime/mobile/offline/esm2022/services/workers/error-blocker.mjs +4 -3
- app-ng-runtime/mobile/offline/esm2022/services/workers/file-handler.mjs +18 -13
- app-ng-runtime/mobile/offline/esm2022/services/workers/id-resolver.mjs +3 -3
- app-ng-runtime/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +9 -5
- app-ng-runtime/mobile/offline/esm2022/utils/file-upload.utils.mjs +1 -1
- app-ng-runtime/mobile/offline/esm2022/utils/live-variable.utils.mjs +12 -11
- app-ng-runtime/mobile/offline/esm2022/utils/query-executor.utils.mjs +5 -4
- app-ng-runtime/mobile/offline/esm2022/utils/security.utils.mjs +3 -2
- app-ng-runtime/mobile/offline/esm2022/utils/utils.mjs +1 -1
- app-ng-runtime/mobile/offline/fesm2022/index.mjs +171 -153
- app-ng-runtime/mobile/offline/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/placeholder/runtime/.npmignore +2 -0
- app-ng-runtime/mobile/placeholder/runtime/bundles/index.umd.js +3 -2
- app-ng-runtime/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +3 -2
- app-ng-runtime/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs +3 -2
- app-ng-runtime/mobile/placeholder/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/.npmignore +2 -0
- app-ng-runtime/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
- app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +1 -1
- app-ng-runtime/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime/.npmignore +2 -0
- app-ng-runtime/mobile/runtime/bundles/index.umd.js +21 -17
- app-ng-runtime/mobile/runtime/esm2022/components/app-ext.component.mjs +4 -3
- app-ng-runtime/mobile/runtime/esm2022/mobile-runtime.module.mjs +5 -4
- app-ng-runtime/mobile/runtime/esm2022/services/cookie.service.mjs +7 -3
- app-ng-runtime/mobile/runtime/esm2022/services/http-interceptor.service.mjs +6 -5
- app-ng-runtime/mobile/runtime/esm2022/services/webprocess.service.mjs +3 -3
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs +18 -13
- app-ng-runtime/mobile/runtime/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/runtime-dynamic/.npmignore +2 -0
- app-ng-runtime/mobile/runtime-dynamic/bundles/index.umd.js +5 -5
- app-ng-runtime/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +2 -2
- app-ng-runtime/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +5 -5
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs +5 -5
- app-ng-runtime/mobile/runtime-dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/variables/.npmignore +2 -0
- app-ng-runtime/mobile/variables/bundles/index.umd.js +28 -21
- app-ng-runtime/mobile/variables/esm2022/services/camera-service.mjs +5 -5
- app-ng-runtime/mobile/variables/esm2022/services/contacts-service.mjs +1 -1
- app-ng-runtime/mobile/variables/esm2022/services/datasync-service.mjs +10 -9
- app-ng-runtime/mobile/variables/esm2022/services/device-service/device-service.mjs +1 -1
- app-ng-runtime/mobile/variables/esm2022/services/device-service/location-service.mjs +1 -1
- app-ng-runtime/mobile/variables/esm2022/services/file-service.mjs +11 -3
- app-ng-runtime/mobile/variables/esm2022/services/scan-service.mjs +1 -1
- app-ng-runtime/mobile/variables/esm2022/variables.module.mjs +3 -3
- app-ng-runtime/mobile/variables/fesm2022/index.mjs +24 -16
- app-ng-runtime/mobile/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/oAuth/.npmignore +2 -0
- app-ng-runtime/oAuth/bundles/index.umd.js +15 -15
- app-ng-runtime/oAuth/esm2022/oAuth.module.mjs +2 -2
- app-ng-runtime/oAuth/esm2022/oAuth.service.mjs +6 -5
- app-ng-runtime/oAuth/esm2022/oAuth.utils.mjs +8 -7
- app-ng-runtime/oAuth/fesm2022/index.mjs +12 -11
- app-ng-runtime/oAuth/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/.npmignore +2 -0
- app-ng-runtime/runtime/base/bundles/index.umd.js +267 -251
- app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +3 -1
- app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +3 -3
- app-ng-runtime/runtime/base/directives/accessroles.directive.d.ts +4 -3
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +34 -30
- app-ng-runtime/runtime/base/esm2022/components/app-spinner.component.mjs +9 -8
- app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +9 -9
- app-ng-runtime/runtime/base/esm2022/components/base-layout.component.mjs +5 -4
- app-ng-runtime/runtime/base/esm2022/components/base-page.component.mjs +16 -15
- app-ng-runtime/runtime/base/esm2022/components/base-partial.component.mjs +15 -14
- app-ng-runtime/runtime/base/esm2022/components/base-prefab.component.mjs +17 -16
- app-ng-runtime/runtime/base/esm2022/components/base-spa-page.component.mjs +16 -15
- app-ng-runtime/runtime/base/esm2022/components/custom-toaster.component.mjs +17 -15
- app-ng-runtime/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +4 -3
- app-ng-runtime/runtime/base/esm2022/components/prefab-preview.component.mjs +4 -3
- app-ng-runtime/runtime/base/esm2022/directives/accessroles.directive.mjs +24 -16
- app-ng-runtime/runtime/base/esm2022/directives/prefab.directive.mjs +4 -4
- app-ng-runtime/runtime/base/esm2022/guards/auth.guard.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/guards/page-not-found.guard.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/guards/role.guard.mjs +5 -4
- app-ng-runtime/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +4 -4
- app-ng-runtime/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +5 -5
- app-ng-runtime/runtime/base/esm2022/resolves/app-extension.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/app-js.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/app-variables.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/i18n.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/metadata.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/resolves/security-config.resolve.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/app-defaults.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/app.manager.service.mjs +19 -16
- app-ng-runtime/runtime/base/esm2022/services/app.service.mjs +9 -8
- app-ng-runtime/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +5 -4
- app-ng-runtime/runtime/base/esm2022/services/http-interceptor.services.mjs +6 -5
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +15 -13
- app-ng-runtime/runtime/base/esm2022/services/navigation.service.mjs +10 -9
- app-ng-runtime/runtime/base/esm2022/services/pipe-provider.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/pipe.service.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/services/prefab-manager.service.mjs +5 -4
- app-ng-runtime/runtime/base/esm2022/services/spinner.service.mjs +9 -8
- app-ng-runtime/runtime/base/esm2022/services/toaster.service.mjs +8 -7
- app-ng-runtime/runtime/base/esm2022/util/fragment-monitor.mjs +3 -3
- app-ng-runtime/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +7 -8
- app-ng-runtime/runtime/base/fesm2022/index.mjs +277 -260
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/overrides/wm_dom_renderer.d.ts +2 -2
- app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
- app-ng-runtime/runtime/dynamic/.npmignore +2 -0
- app-ng-runtime/runtime/dynamic/bundles/index.umd.js +22 -21
- app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +1 -1
- app-ng-runtime/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +4 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +6 -5
- app-ng-runtime/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +3 -3
- app-ng-runtime/runtime/dynamic/esm2022/main.mjs +3 -2
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +21 -19
- app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +2 -2
- app-ng-runtime/scripts/jquery-ui/ui/widgets/droppable.js +7 -7
- app-ng-runtime/scripts/jquery-ui/ui/widgets/resizable.js +13 -10
- app-ng-runtime/scripts/jquery-ui/ui/widgets/sortable.js +7 -7
- app-ng-runtime/security/.npmignore +2 -0
- app-ng-runtime/security/bundles/index.umd.js +17 -17
- app-ng-runtime/security/esm2022/security.module.mjs +2 -2
- app-ng-runtime/security/esm2022/security.service.mjs +14 -13
- app-ng-runtime/security/fesm2022/index.mjs +14 -13
- app-ng-runtime/security/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/security/security.service.d.ts +1 -1
- app-ng-runtime/swipey/.npmignore +2 -0
- app-ng-runtime/swipey/esm2022/swipe.animation.mjs +1 -1
- app-ng-runtime/swipey/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/transpiler/.npmignore +2 -0
- app-ng-runtime/transpiler/bundles/index.umd.js +10 -9
- app-ng-runtime/transpiler/esm2022/build.mjs +8 -6
- app-ng-runtime/transpiler/fesm2022/index.mjs +7 -5
- app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/.npmignore +2 -0
- app-ng-runtime/variables/bundles/index.umd.js +160 -150
- app-ng-runtime/variables/esm2022/factory/variable.factory.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/action/login-action.manager.mjs +15 -14
- app-ng-runtime/variables/esm2022/manager/action/logout-action.manager.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/action/notification-action.manager.mjs +9 -8
- app-ng-runtime/variables/esm2022/manager/variable/base-variable.manager.mjs +3 -2
- app-ng-runtime/variables/esm2022/manager/variable/device-variable-manager.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/variable/device-variable-service.mjs +1 -1
- app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +11 -10
- app-ng-runtime/variables/esm2022/model/action/notification-action.mjs +1 -1
- app-ng-runtime/variables/esm2022/service/metadata-service/metadata.service.mjs +3 -3
- app-ng-runtime/variables/esm2022/service/variables.service.mjs +9 -8
- app-ng-runtime/variables/esm2022/util/action/navigation-action.utils.mjs +4 -4
- app-ng-runtime/variables/esm2022/util/variable/pagination.utils.mjs +30 -23
- app-ng-runtime/variables/esm2022/util/variable/service-variable.utils.mjs +29 -28
- app-ng-runtime/variables/esm2022/util/variable/variables.utils.mjs +75 -70
- app-ng-runtime/variables/esm2022/variables.module.mjs +2 -2
- app-ng-runtime/variables/fesm2022/index.mjs +174 -163
- app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/variables/util/variable/service-variable.utils.d.ts +1 -1
- app-ng-runtime/build-task/advanced/custom-widget-prop/custom-widget-prop.build.d.ts +0 -2
- app-ng-runtime/build-task/esm2022/advanced/custom-widget-prop/custom-widget-prop.build.mjs +0 -10
- app-ng-runtime/components/advanced/custom/custom-widget-container-prop/custom-widget-container-prop.directive.d.ts +0 -20
- app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container-prop/custom-widget-container-prop.directive.mjs +0 -70
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../projects/mobile/offline/src/services/local-key-value.service.ts","../../../../projects/mobile/offline/src/utils/utils.ts","../../../../projects/mobile/offline/src/models/local-db-store.ts","../../../../projects/mobile/offline/src/models/config.ts","../../../../projects/mobile/offline/src/services/local-db-management.service.ts","../../../../projects/mobile/offline/src/services/change-log.service.ts","../../../../projects/mobile/offline/src/services/local-db.service.ts","../../../../projects/mobile/offline/src/services/workers/file-handler.ts","../../../../projects/mobile/offline/src/services/workers/error-blocker.ts","../../../../projects/mobile/offline/src/services/workers/id-resolver.ts","../../../../projects/mobile/offline/src/services/workers/multi-part-param-transformer.ts","../../../../projects/mobile/offline/src/utils/live-variable.utils.ts","../../../../projects/mobile/offline/src/utils/file-upload.utils.ts","../../../../projects/mobile/offline/src/utils/query-executor.utils.ts","../../../../projects/mobile/offline/src/utils/security.utils.ts","../../../../projects/mobile/offline/src/offline.module.ts","../../../../projects/mobile/offline/src/services/push.service.ts","../../../../projects/mobile/offline/src/services/local-db-data-pull.service.ts","../../../../projects/mobile/offline/src/index.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { LocalDBStore } from '../models/local-db-store';\n\n@Injectable({providedIn: 'root'})\nexport class LocalKeyValueService {\n static readonly SERVICE_NAME = 'LocalKeyValueService';\n private store: LocalDBStore;\n\n /**\n * retrieves the value mapped to the key.\n *\n * @param {string} key key\n * @returns {object} a promise that is resolved when value is retrieved from store.\n */\n public get(key: string): any {\n return this.fetchEntry(key)\n .then(result => {\n let value;\n if (result && result.length > 0) {\n value = result[0].value;\n if (value) {\n value = JSON.parse(value);\n }\n }\n return value;\n });\n }\n\n /**\n * Initializes the service with the given store.\n *\n * @param {object} storeToUse a store with id, key, value with fields.\n * @returns {object} a promise that is resolved when data is persisted.\n */\n public init(storeToUse: LocalDBStore) {\n this.store = storeToUse;\n }\n\n /**\n * clear data in all databases.\n *\n * @param {string} key key\n * @param {string} value value\n * @returns {object} a promise that is resolved when data is persisted.\n */\n public put(key, value) {\n if (value) {\n value = JSON.stringify(value);\n }\n return this.fetchEntry(key).then(result => {\n if (result && result.length > 0) {\n return this.store.save({\n 'id' : result[0].id,\n 'key' : key,\n 'value' : value\n });\n }\n return this.store.add({\n 'key' : key,\n 'value' : value\n });\n });\n }\n\n /**\n * clear data in all databases.\n *\n * @param {string} key key\n * @returns {object} a promise that is resolved when respective value is removed from store.\n */\n public remove(key) {\n return this.fetchEntry(key).then(result => {\n if (result && result.length > 0) {\n return this.store.delete(result[0].id);\n }\n });\n }\n\n private fetchEntry(key) {\n const filterCriteria = [{\n 'attributeName' : 'key',\n 'attributeValue' : key,\n 'attributeType' : 'STRING',\n 'filterCondition' : 'EQUALS'\n }];\n return this.store.filter(filterCriteria);\n }\n}\n","export const WM_LOCAL_OFFLINE_CALL = 'WM_LOCAL_OFFLINE_CALL';\n\nexport const escapeName = (name) => {\n if (name) {\n name = name.replace(/\"/g, '\"\"');\n return '\"' + name + '\"';\n }\n};\n","import { File } from '@awesome-cordova-plugins/file/ngx';\nimport { SQLiteObject } from '@awesome-cordova-plugins/sqlite/ngx';\n\nimport { convertToBlob, isDefined } from '@wm/core';\nimport { DeviceFileService } from '@wm/mobile/core';\nimport { SWAGGER_CONSTANTS } from '@wm/variables';\n\nimport { ColumnInfo, EntityInfo } from './config';\nimport { escapeName } from '../utils/utils';\nimport { LocalDBManagementService } from '../services/local-db-management.service';\n\ndeclare const _;\n\nexport interface FilterCriterion {\n attributeName: string;\n attributeValue: any;\n attributeType: string;\n filterCondition: string;\n}\n\nexport interface Pagination {\n offset: number;\n limit: number;\n}\n\nconst insertRecordSqlTemplate = (schema: EntityInfo) => {\n const columnNames = [],\n placeHolder = [];\n _.forEach(schema.columns, col => {\n columnNames.push(escapeName(col.name));\n placeHolder.push('?');\n });\n return `INSERT INTO ${escapeName(schema.name)} (${columnNames.join(',')}) VALUES (${placeHolder.join(',')})`;\n};\n\nconst replaceRecordSqlTemplate = (schema: EntityInfo) => {\n const columnNames = [],\n placeHolder = [];\n _.forEach(schema.columns, col => {\n columnNames.push(escapeName(col.name));\n placeHolder.push('?');\n });\n return `REPLACE INTO ${escapeName(schema.name)} (${columnNames.join(',')}) VALUES (${placeHolder.join(',')})`;\n};\n\nconst deleteRecordTemplate = (schema: EntityInfo) => {\n const primaryKeyField = _.find(schema.columns, 'primaryKey');\n if (primaryKeyField) {\n return `DELETE FROM ${escapeName(schema.name)} WHERE ${escapeName(primaryKeyField.name)} = ?`;\n }\n return '';\n};\n\nconst selectSqlTemplate = (schema: EntityInfo) => {\n const columns = [],\n joins = [];\n schema.columns.forEach( col => {\n let childTableName;\n columns.push(escapeName(schema.name) + '.' + escapeName(col.name) + ' as ' + col.fieldName);\n if (col.foreignRelations) {\n col.foreignRelations.forEach(foreignRelation => {\n childTableName = foreignRelation.sourceFieldName;\n _.forEach(foreignRelation.dataMapper, (childCol, childFiledName) => {\n columns.push(childTableName + '.' + escapeName(childCol.name) + ' as \\'' + childFiledName + '\\'');\n });\n joins.push(` LEFT JOIN ${escapeName(foreignRelation.targetTable)} ${childTableName}\n ON ${childTableName}.${escapeName(foreignRelation.targetColumn)} = ${escapeName(schema.name)}.${escapeName(col.name)}`);\n });\n }\n });\n return `SELECT ${columns.join(',')} FROM ${escapeName(schema.name)} ${joins.join(' ')}`;\n};\n\nconst countQueryTemplate = (schema: EntityInfo) => {\n const joins = [];\n schema.columns.forEach( col => {\n let childTableName;\n if (col.foreignRelations) {\n col.foreignRelations.forEach(foreignRelation => {\n childTableName = foreignRelation.sourceFieldName;\n joins.push(` LEFT JOIN ${escapeName(foreignRelation.targetTable)} ${childTableName}\n ON ${childTableName}.${escapeName(foreignRelation.targetColumn)} = ${escapeName(schema.name)}.${escapeName(col.name)}`);\n });\n }\n });\n return `SELECT count(*) as count FROM ${escapeName(schema.name)} ${joins.join(' ')}`;\n};\n\nconst generateWherClause = (store: LocalDBStore, filterCriteria: FilterCriterion[]) => {\n let conditions;\n const fieldToColumnMapping = store.fieldToColumnMapping,\n tableName = store.entitySchema.name;\n if (!_.isEmpty(filterCriteria) && _.isString(filterCriteria)) {\n return ' WHERE ' + filterCriteria;\n }\n if (filterCriteria) {\n conditions = filterCriteria.map(filterCriterion => {\n const colName = fieldToColumnMapping[filterCriterion.attributeName],\n condition = filterCriterion.filterCondition;\n let target = filterCriterion.attributeValue,\n operator = '=';\n if (filterCriterion.attributeType === 'STRING') {\n if (condition === 'STARTING_WITH') {\n target = target + '%';\n operator = 'like';\n } else if (condition === 'ENDING_WITH') {\n target = '%' + target;\n operator = 'like';\n } else if (condition === 'CONTAINING') {\n target = '%' + target + '%';\n operator = 'like';\n }\n target = `'${target}'`;\n } else if (filterCriterion.attributeType === 'BOOLEAN') {\n target = (target === true ? 1 : 0);\n }\n return `${escapeName(tableName)}.${escapeName(colName)} ${operator} ${target}`;\n });\n }\n return conditions && conditions.length > 0 ? ' WHERE ' + conditions.join(' AND ') : '';\n};\n\nconst generateOrderByClause = (store: LocalDBStore, sort: string) => {\n if (sort) {\n return ' ORDER BY ' + _.map(sort.split(','), field => {\n const splits = _.trim(field).split(' ');\n splits[0] = escapeName(store.entitySchema.name) + '.' + escapeName(store.fieldToColumnMapping[splits[0]]);\n return splits.join(' ');\n }).join(',');\n }\n return '';\n};\n\nconst geneateLimitClause = page => {\n page = page || {};\n return ' LIMIT ' + (page.limit || 100) + ' OFFSET ' + (page.offset || 0);\n};\n\nconst mapRowDataToObj = (schema: EntityInfo, dataObj: any) => {\n schema.columns.forEach(col => {\n const val = dataObj[col.fieldName];\n if (col.foreignRelations) {\n col.foreignRelations.forEach(foreignRelation => {\n let childEntity = null;\n _.forEach(foreignRelation.dataMapper, function (childCol, childFieldName) {\n const fieldValue = dataObj[childFieldName];\n if (isDefined(fieldValue) && fieldValue !== null && fieldValue !== '') {\n childEntity = childEntity || {};\n childEntity[childCol.fieldName] = dataObj[childFieldName];\n }\n delete dataObj[childFieldName];\n });\n dataObj[foreignRelation.sourceFieldName] = childEntity;\n });\n } else if (col.sqlType === 'boolean' && !_.isNil(val)) {\n dataObj[col.fieldName] = (val === 1);\n }\n });\n return dataObj;\n};\n\nconst getValue = (entity: any, col: ColumnInfo) => {\n let value = entity[col.fieldName];\n if (col.foreignRelations) {\n col.foreignRelations.some(foreignRelation => {\n if (foreignRelation.targetEntity && entity[foreignRelation.sourceFieldName]) {\n value = entity[foreignRelation.sourceFieldName][foreignRelation.targetFieldName];\n return true;\n }\n return false;\n });\n }\n if (_.isNil(value)) {\n return col.defaultValue;\n } else if (col.sqlType === 'boolean') {\n return (value === true ? 1 : 0);\n } else {\n return value;\n }\n};\n\nconst mapObjToRow = (store: LocalDBStore, entity: any) => {\n const row = {};\n store.entitySchema.columns.forEach(col => row[col.name] = getValue(entity, col));\n return row;\n};\n\nexport class LocalDBStore {\n\n public readonly primaryKeyField: ColumnInfo;\n public readonly primaryKeyName: string;\n public readonly fieldToColumnMapping: object = {};\n\n private insertRecordSqlTemplate: string;\n private replaceRecordSqlTemplate: string;\n private deleteRecordTemplate: string;\n private selectSqlTemplate: string;\n private countQuery: string;\n\n constructor(\n private deviceFileService: DeviceFileService,\n public readonly entitySchema: EntityInfo,\n private file: File,\n private localDbManagementService: LocalDBManagementService,\n private sqliteObject: SQLiteObject\n ) {\n this.primaryKeyField = _.find(this.entitySchema.columns, 'primaryKey');\n this.primaryKeyName = this.primaryKeyField ? this.primaryKeyField.fieldName : undefined;\n this.entitySchema.columns.forEach(c => {\n this.fieldToColumnMapping[c.fieldName] = c.name;\n if (c.foreignRelations) {\n c.foreignRelations.forEach( foreignRelation => {\n this.fieldToColumnMapping[foreignRelation.targetPath] = c.name;\n _.forEach(foreignRelation.dataMapper, (childCol, childFieldName) => {\n this.fieldToColumnMapping[childFieldName] = foreignRelation.sourceFieldName + '.' + childCol.name;\n });\n });\n }\n });\n\n this.insertRecordSqlTemplate = insertRecordSqlTemplate(this.entitySchema);\n this.replaceRecordSqlTemplate = replaceRecordSqlTemplate(this.entitySchema);\n this.deleteRecordTemplate = deleteRecordTemplate(this.entitySchema);\n this.selectSqlTemplate = selectSqlTemplate(this.entitySchema);\n this.countQuery = countQueryTemplate(this.entitySchema);\n }\n\n public add(entity: any): Promise<any> {\n if (this.primaryKeyName) {\n const idValue = entity[this.primaryKeyName];\n if (this.primaryKeyField.sqlType === 'number'\n && (!isDefined(idValue) || (_.isString(idValue) && _.isEmpty(_.trim(idValue))))) {\n if (this.primaryKeyField.generatorType === 'identity') {\n // updating the id with the latest id obtained from nextId.\n entity[this.primaryKeyName] = this.localDbManagementService.nextIdCount();\n } else {\n // for assigned type, get the primaryKeyValue from the relatedTableData which is inside the entity\n const primaryKeyValue = this.getValue(entity, this.primaryKeyName);\n entity[this.primaryKeyName] = primaryKeyValue;\n }\n }\n }\n const rowData = mapObjToRow(this, entity);\n const params = this.entitySchema.columns.map(f => rowData[f.name]);\n return this.sqliteObject.executeSql(this.insertRecordSqlTemplate, params)\n .then(result => result.insertId);\n }\n\n /**\n * clears all data of this store.\n * @returns {object} promise\n */\n public clear(): Promise<any> {\n return this.sqliteObject.executeSql('DELETE FROM ' + escapeName(this.entitySchema.name));\n }\n\n /**\n * creates the stores if it does not exist\n * @returns {Promise<any>}\n */\n public create(): Promise<any> {\n return this.sqliteObject.executeSql(this.createTableSql(this.entitySchema)).then(() => this);\n }\n\n /**\n * counts the number of records that satisfy the given filter criteria.\n * @param {FilterCriterion[]} filterCriteria\n * @returns {object} promise that is resolved with count\n */\n public count(filterCriteria?: FilterCriterion[]): Promise<number> {\n const sql = this.countQuery + generateWherClause(this, filterCriteria);\n return this.sqliteObject.executeSql(sql).then(result => result.rows.item(0)['count']);\n }\n\n /**\n * This function deserializes the given map object to FormData, provided that map object was\n * serialized by using serialize method of this store.\n * @param {object} map object to deserialize\n * @returns {object} promise that is resolved with the deserialized FormData.\n */\n public deserialize(map: any) {\n return this.deserializeMapToFormData(map);\n }\n\n /**\n * filters data of this store that statisfy the given filter criteria.\n * @param {FilterCriterion[]} filterCriteria\n * @param {string=} sort ex: 'filedname asc/desc'\n * @param {object=} page {'offset' : 0, \"limit\" : 20}\n * @returns {object} promise that is resolved with the filtered data.\n */\n public filter(filterCriteria?: FilterCriterion[], sort?: string, page?: Pagination): Promise<any[]> {\n let sql = this.selectSqlTemplate;\n sql += generateWherClause(this, filterCriteria);\n sql += generateOrderByClause(this, sort);\n sql += geneateLimitClause(page);\n return this.sqliteObject.executeSql(sql)\n .then(result => {\n const objArr = [],\n rowCount = result.rows.length;\n for (let i = 0; i < rowCount; i++) {\n objArr.push(mapRowDataToObj(this.entitySchema, result.rows.item(i)));\n }\n return objArr;\n });\n }\n\n // fetches all the data related to the primaryKey\n public refresh(data) {\n const primaryKeyName = this.primaryKeyName;\n const primaryKey = this.getValue(data, primaryKeyName);\n if (!primaryKey) {\n return Promise.resolve(data);\n }\n return this.get(primaryKey);\n }\n\n /**\n * deletes the record with the given primary key.\n * @param {object} primaryKey primary key of the record\n * @returns {object} promise\n */\n public delete(primaryKey: any) {\n return this.sqliteObject.executeSql(this.deleteRecordTemplate, [primaryKey]);\n }\n\n /**\n * finds the record with the given primary key.\n * @param {object} primaryKey primary key of the record\n * @returns {object} promise that is resolved with entity\n */\n public get(primaryKey: any) {\n const filterCriteria = [{\n attributeName: this.primaryKeyName,\n filterCondition: '=',\n attributeValue: primaryKey,\n attributeType: this.primaryKeyField.sqlType.toUpperCase() }];\n return this.filter(filterCriteria).then(function (obj) {\n return obj && obj.length === 1 ? obj[0] : undefined;\n });\n }\n\n /**\n * retrieve the value for the given field.\n *\n * @param entity\n * @param {string} fieldName\n * @returns {undefined | any | number}\n */\n public getValue(entity: any, fieldName: string) {\n const column = this.entitySchema.columns.find( col => col.fieldName === fieldName);\n return getValue(entity, column);\n }\n\n /**\n * saves the given entity to the store. If the record is not available, then a new record will be created.\n * @param {object} entity the entity to save\n * @returns {object} promise\n */\n public save(entity) {\n return this.saveAll([entity]);\n }\n\n /**\n * saves the given entity to the store. If the record is not available, then a new record will be created.\n * @param {object} entities the entity to save\n * @returns {object} promise\n */\n public saveAll(entities: any[]) {\n // filtering the null entities\n entities = _.filter(entities, null);\n const queries = _.map(entities, entity => {\n const rowData = mapObjToRow(this, entity);\n const params = this.entitySchema.columns.map(f => rowData[f.name]);\n return [this.replaceRecordSqlTemplate, params];\n });\n return this.sqliteObject.sqlBatch(queries);\n }\n\n /**\n * Based on this store columns, this function converts the given FormData to a map object.\n * Multipart file is stored as a local file. If form data cannot be serialized,\n * then formData is returned back.\n * @param {FormData} formData object to serialize\n * @returns {object} promise that is resolved with a map.\n */\n public serialize(formData: any) {\n return this.serializeFormDataToMap(formData);\n }\n\n /**\n * Save blob to a local file\n * @param blob\n * @returns {*}\n */\n private saveBlobToFile(blob: any) {\n const fileName = this.deviceFileService.appendToFileName(blob.name),\n uploadDir = this.deviceFileService.getUploadDirectory();\n return this.file.writeFile(uploadDir, fileName, blob).then(function () {\n return {\n 'name' : blob.name,\n 'type' : blob.type,\n 'lastModified' : blob.lastModified,\n 'lastModifiedDate' : blob.lastModifiedDate,\n 'size' : blob.size,\n 'wmLocalPath' : uploadDir + '/' + fileName\n };\n });\n }\n\n /**\n * Converts form data object to map for storing request in local database..\n */\n private serializeFormDataToMap(formData) {\n const blobColumns = _.filter(this.entitySchema.columns, {\n 'sqlType' : 'blob'\n }),\n promises = [];\n let map = {};\n if (formData && typeof formData.append === 'function' && formData.rowData) {\n _.forEach(formData.rowData, (fieldData, fieldName) => {\n if (fieldData && _.find(blobColumns, {'fieldName' : fieldName})) {\n promises.push(this.saveBlobToFile(fieldData).then(localFile => {\n map[fieldName] = localFile;\n }));\n } else {\n map[fieldName] = fieldData;\n }\n });\n } else {\n map = formData;\n }\n return Promise.all(promises).then(() => map);\n }\n\n /**\n * Converts map object back to form data.\n */\n private deserializeMapToFormData(map) {\n const formData = new FormData(),\n blobColumns = this.entitySchema.columns.filter(c => c.sqlType === 'blob'),\n promises = [];\n _.forEach(blobColumns, column => {\n const value = map[column.fieldName];\n if (value && value.wmLocalPath) {\n promises.push(convertToBlob(value.wmLocalPath)\n .then(result => formData.append(column.fieldName, result.blob, value.name)));\n map[column.fieldName] = '';\n }\n });\n formData.append(SWAGGER_CONSTANTS.WM_DATA_JSON, new Blob([JSON.stringify(map)], {\n type: 'application/json'\n }));\n return Promise.all(promises).then(() => formData);\n }\n\n private createTableSql(schema) {\n const fieldStr = _.reduce(schema.columns, (result, f) => {\n let str = escapeName(f.name);\n if (f.primaryKey) {\n if (f.sqlType === 'number' && f.generatorType === 'databaseIdentity') {\n str += ' INTEGER PRIMARY KEY AUTOINCREMENT';\n } else {\n str += ' PRIMARY KEY';\n }\n }\n return result ? result + ',' + str : str;\n }, false);\n return `CREATE TABLE IF NOT EXISTS ${escapeName(schema.name)} (${fieldStr})`;\n }\n}\n","import { SQLiteObject } from '@awesome-cordova-plugins/sqlite/ngx';\n\nimport { LocalDBStore } from './local-db-store';\n\nexport class DBInfo {\n public schema = {\n name: '',\n isInternal: false,\n entities: new Map<string, EntityInfo>()\n };\n public stores = new Map<string, LocalDBStore>();\n public queries = new Map<string, NamedQueryInfo>();\n public sqliteObject: SQLiteObject;\n}\n\nexport class EntityInfo {\n public columns = new Array<ColumnInfo>();\n public pullConfig: PullConfig;\n public pushConfig: PushConfig;\n\n constructor(public name: string, public entityName?: string) {\n this.entityName = this.entityName || this.name;\n }\n}\n\nexport class ColumnInfo {\n public generatorType: string;\n public sqlType: string;\n public primaryKey = false;\n public defaultValue: any;\n public foreignRelations?: ForeignRelationInfo[];\n\n constructor(public name: string, public fieldName?: string) {\n this.fieldName = this.fieldName || this.name;\n }\n}\n\nexport class ForeignRelationInfo {\n public sourceFieldName: string;\n public targetEntity: string;\n public targetTable: string;\n public targetColumn: string;\n public targetFieldName: string;\n public targetPath: string;\n public dataMapper: Array<ColumnInfo>;\n}\n\nexport class NamedQueryInfo {\n public params: NamedQueryParamInfo[];\n public response = {\n properties: []\n };\n constructor(public name: string, public query: string) {\n\n }\n}\n\nexport class NamedQueryParamInfo {\n constructor(public name: string, public type?: string, public variableType?: string) {\n\n }\n}\n\nexport class PullConfig {\n public size: number;\n public query: string;\n public orderBy: string;\n public maxNoOfRecords: number;\n public defaultType: string;\n public pullType: PullType;\n public filter: OfflineDataFilter[];\n}\n\nexport enum PullType {\n LIVE = 'LIVE',\n BUNDLED = 'BUNDLED',\n APP_START = 'APP_START'\n}\n\nexport class OfflineDataFilter {\n public attributeName: string;\n public attributeValue: any;\n public attributeType: string;\n public filterCondition: string;\n}\n\nexport class PushConfig {\n public insertEnabled = false;\n public updateEnabled = false;\n public deleteEnabled = false;\n public readEnabled = true;\n}\n","import { Injectable } from '@angular/core';\n\nimport { AppVersion } from '@awesome-cordova-plugins/app-version/ngx';\nimport { File } from '@awesome-cordova-plugins/file/ngx';\nimport { SQLite, SQLiteObject } from '@awesome-cordova-plugins/sqlite/ngx';\n\nimport { DataType, DEFAULT_FORMATS, executePromiseChain, extractType, isAndroid, isArray, isIos, noop, toPromise, transformFileURI } from '@wm/core';\nimport { DeviceFileService, DeviceService } from '@wm/mobile/core';\nimport { SecurityService } from '@wm/security';\nimport { formatDate } from '@wm/variables';\n\nimport { LocalKeyValueService } from './local-key-value.service';\nimport { LocalDBStore } from '../models/local-db-store';\nimport { escapeName } from '../utils/utils';\nimport { ColumnInfo, DBInfo, EntityInfo, NamedQueryInfo, PullType } from '../models/config';\n\ndeclare const _;\ndeclare const cordova;\ndeclare const moment;\ndeclare const Zeep;\n\nconst NEXT_ID_COUNT = 'localDBStore.nextIdCount';\nconst META_LOCATION = 'www/metadata/app';\nconst OFFLINE_WAVEMAKER_DATABASE_SCHEMA = {\n name: 'wavemaker',\n version: 1,\n isInternal: true,\n tables: [\n {\n name: 'key_value',\n entityName: 'key-value',\n columns: [{\n fieldName: 'id',\n name: 'id',\n generatorType : 'databaseIdentity',\n sqlType : 'number',\n primaryKey: true\n }, {\n fieldName: 'key',\n name: 'key'\n }, {\n name: 'value',\n fieldName: 'value'\n }]\n },\n {\n name: 'offlineChangeLog',\n entityName: 'offlineChangeLog',\n columns: [{\n fieldName: 'id',\n name: 'id',\n generatorType: 'databaseIdentity',\n sqlType: 'number',\n primaryKey: true\n }, {\n name: 'service',\n fieldName: 'service'\n }, {\n name: 'operation',\n fieldName: 'operation'\n }, {\n name: 'params',\n fieldName: 'params'\n }, {\n name: 'timestamp',\n fieldName: 'timestamp'\n }, {\n name: 'hasError',\n fieldName: 'hasError'\n }, {\n name: 'errorMessage',\n fieldName: 'errorMessage'\n }]\n }\n ]\n};\n\nexport interface CallBack {\n onDbCreate?: (info: any) => any;\n postImport?: (importFolderPath: string, metaInfo: any) => any;\n preExport?: (folderToExportFullPath: string, metaInfo: any) => any;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LocalDBManagementService {\n static readonly SERVICE_NAME = 'LocalDBManagementService';\n private callbacks: CallBack[] = [];\n private dbInstallDirectory: string;\n private dbInstallDirectoryName: string;\n private dbInstallParentDirectory: string;\n private databases: Map<string, DBInfo>;\n private _logSql = false;\n public nextId = 100000000000;\n private readonly systemProperties = {\n 'USER_ID' : {\n 'name' : 'USER_ID',\n 'value' : () => this.securityService.getLoggedInUser().then( userInfo => userInfo.userId)\n },\n 'USER_NAME' : {\n 'name' : 'USER_NAME',\n 'value' : () => this.securityService.getLoggedInUser().then( userInfo => userInfo.userName)\n },\n 'DATE_TIME' : {\n 'name' : 'DATE_TIME',\n 'value' : () => moment().format('YYYY-MM-DDThh:mm:ss')\n },\n 'DATE' : {\n 'name' : 'CURRENT_DATE',\n 'value' : () => moment().format('YYYY-MM-DD')\n },\n 'TIME' : {\n 'name' : 'TIME',\n 'value' : () => moment().format('hh:mm:ss')\n }\n };\n\n constructor(\n private appVersion: AppVersion,\n private deviceService: DeviceService,\n private deviceFileService: DeviceFileService,\n private file: File,\n private localKeyValueService: LocalKeyValueService,\n private securityService: SecurityService,\n private sqlite: SQLite\n ) {}\n\n /**\n * Closes all databases.\n *\n * @returns {object} a promise.\n */\n public close(): Promise<any> {\n return new Promise((resolve, reject) => {\n // Before closing databases, give some time for the pending transactions (if any).\n setTimeout(() => {\n const closePromises = _.map(_.values(this.databases), db => db.sqliteObject.close());\n Promise.all(closePromises).then(resolve, reject);\n }, 1000);\n });\n }\n\n public nextIdCount() {\n this.nextId = this.nextId + 1;\n this.localKeyValueService.put(NEXT_ID_COUNT, this.nextId);\n return this.nextId;\n }\n\n /**\n * Executes a named query.\n *\n * @param {string} dbName name of database on which the named query has to be run\n * @param {string} queryName name of the query to execute\n * @param {object} params parameters required for query.\n * @returns {object} a promise.\n */\n public executeNamedQuery(dbName: string, queryName: string, params: any) {\n let queryData, paramPromises;\n if (!this.databases[dbName] || !this.databases[dbName].queries[queryName]) {\n return Promise.reject(`Query by name ' ${queryName} ' Not Found`);\n }\n queryData = this.databases[dbName].queries[queryName];\n paramPromises = _.chain(queryData.params)\n .filter(p => p.variableType !== 'PROMPT')\n .forEach(p => {\n const paramValue = this.systemProperties[p.variableType].value(p.name, params);\n return toPromise(paramValue).then(v => params[p.name] = v);\n }).value();\n return Promise.all(paramPromises).then(() => {\n params = _.map(queryData.params, p => {\n // Sqlite will accept DateTime value as below format.\n if (typeof params[p.name] !== 'string'\n && (p.type === DataType.DATETIME || p.type === DataType.LOCALDATETIME)) {\n return formatDate(params[p.name], p.type);\n }\n // sqlite accepts the bool val as 1,0 hence convert the boolean value to number\n if (p.type === DataType.BOOLEAN) {\n return this.convertBoolToInt(params[p.name]);\n }\n return params[p.name];\n });\n return this.executeSQLQuery(dbName, queryData.query, params)\n .then(result => {\n let firstRow,\n needTransform;\n if (!_.isEmpty(result.rows)) {\n firstRow = result.rows[0];\n needTransform = _.find(queryData.response.properties, p => !firstRow.hasOwnProperty(p.fieldName));\n if (!_.isUndefined(needTransform)) {\n result.rows = _.map(result.rows, row => {\n const transformedRow = {},\n rowWithUpperKeys = {};\n // This is to make search for data as case-insensitive\n _.forEach(row, (v, k) => rowWithUpperKeys[k.toUpperCase()] = v);\n _.forEach(queryData.response.properties, p => {\n // format the value depending on the typeRef specified in properties.\n const propType = extractType(p.fieldType.typeRef);\n const formatValue = DEFAULT_FORMATS[_.toUpper(propType)];\n const fieldVal = row[p.name];\n if (fieldVal && typeof fieldVal !== 'string'\n && (propType === DataType.DATETIME || propType === DataType.LOCALDATETIME || propType === DataType.DATE)) {\n if (moment(fieldVal).isValid()) {\n row[p.name] = formatDate(fieldVal, propType);\n } else if (moment(fieldVal, 'HH:mm').isValid()) {\n // if the value is in HH:mm:ss format, it returns a wrong date. So append the date to the given value to get date\n row[p.name] = moment().format('YYYY-MM-DD') + 'T' + fieldVal;\n }\n }\n if (propType === DataType.BOOLEAN) {\n row[p.name] = this.convertIntToBool(fieldVal);\n }\n rowWithUpperKeys[p.nameInUpperCase] = row[p.name];\n transformedRow[p.name] = row[p.name];\n transformedRow[p.fieldName] = row[p.fieldName] || rowWithUpperKeys[p.nameInUpperCase];\n });\n return transformedRow;\n });\n }\n }\n return result;\n });\n });\n }\n\n /**\n * This function will export the databases in a zip format.\n *\n * @returns {object} a promise that is resolved when zip is created.\n */\n public exportDB(): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const folderToExport = 'offline_temp_' + _.now(),\n folderToExportFullPath = cordova.file.cacheDirectory + folderToExport + '/',\n zipFileName = '_offline_data.zip',\n metaInfo = {\n app: null,\n OS: '',\n createdOn: 0\n };\n let zipDirectory;\n if (isIos()) {\n // In IOS, save zip to documents directory so that user can export the file from IOS devices using iTUNES.\n zipDirectory = cordova.file.documentsDirectory;\n } else {\n // In Android, save zip to download directory.\n zipDirectory = cordova.file.externalRootDirectory + 'Download/';\n }\n // Create a temporary folder to copy all the content to export\n this.file.createDir(cordova.file.cacheDirectory, folderToExport, false)\n .then(() => {\n // Copy databases to temporary folder for export\n return this.file.copyDir(this.dbInstallParentDirectory, this.dbInstallDirectoryName, folderToExportFullPath, 'databases')\n .then(() => {\n // Prepare meta info to identify the zip and other info\n return this.getAppInfo();\n }).then(appInfo => {\n metaInfo.app = (appInfo as any);\n if (isIos()) {\n metaInfo.OS = 'IOS';\n } else if (isAndroid()) {\n metaInfo.OS = 'ANDROID';\n }\n metaInfo.createdOn = _.now();\n return metaInfo;\n }).then(() => executePromiseChain(this.getCallbacksFor('preExport'), [folderToExportFullPath, metaInfo]))\n .then(() => {\n // Write meta data to META.json\n return this.file.writeFile(folderToExportFullPath, 'META.json', JSON.stringify(metaInfo));\n });\n }).then(() => {\n // Prepare name to use for the zip.\n let appName = metaInfo.app.name;\n appName = appName.replace(/\\s+/g, '_');\n return this.deviceFileService.newFileName(zipDirectory, appName + zipFileName)\n .then(fileName => {\n // Zip the temporary folder for export\n return new Promise((rs, re) => {\n Zeep.zip({\n from : folderToExportFullPath,\n to : zipDirectory + fileName\n }, () => rs(zipDirectory + fileName), re);\n });\n });\n }).then(resolve, reject)\n .catch(noop).then(() => {\n // Remove temporary folder for export\n return this.deviceFileService.removeDir(cordova.file.cacheDirectory + folderToExport);\n });\n });\n }\n\n /**\n * returns store bound to the dataModelName and entityName.\n *\n * @param dataModelName\n * @param entityName\n * @returns {*}\n */\n public getStore(dataModelName: string, entityName: string): Promise<LocalDBStore> {\n return new Promise((resolve, reject) => {\n if (this.databases[dataModelName]) {\n resolve(this.databases[dataModelName].stores[entityName]);\n }\n reject(`store with name'${entityName}' in datamodel '${dataModelName}' is not found`);\n });\n }\n\n /**\n * This function will replace the databases with the files provided in zip. If import gets failed,\n * then app reverts back to use old databases.\n *\n * @param {string} zipPath location of the zip file.\n * @param {boolean} revertIfFails If true, then a backup is created and when import fails, backup is reverted back.\n * @returns {object} a promise that is resolved when zip is created.\n */\n public importDB(zipPath: string, revertIfFails: boolean): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n const importFolder = 'offline_temp_' + _.now(),\n importFolderFullPath = cordova.file.cacheDirectory + importFolder + '/';\n let zipMeta;\n // Create a temporary folder to unzip the contents of the zip.\n this.file.createDir(cordova.file.cacheDirectory, importFolder, false)\n .then( () => {\n return new Promise<void>((rs, re) => {\n // Unzip to temporary location\n Zeep.unzip({\n from: zipPath,\n to: importFolderFullPath\n }, rs, re);\n });\n }).then(() => {\n /*\n * read meta data and allow import only package name of the app from which this zip is created\n * and the package name of this app are same.\n */\n return this.file.readAsText(importFolderFullPath, 'META.json')\n .then(text => {\n zipMeta = JSON.parse(text);\n return this.getAppInfo();\n }).then(appInfo => {\n if (!zipMeta.app) {\n return Promise.reject('meta information is not found in zip');\n }\n if (zipMeta.app.packageName !== appInfo.packageName) {\n return Promise.reject('database zip of app with same package name can only be imported');\n }\n });\n }).then(() => {\n let backupZip;\n return this.close()\n .then(() => {\n if (revertIfFails) {\n // create backup\n return this.exportDB()\n .then(path => backupZip = path);\n }\n }).then(() => {\n // delete existing databases\n return this.deviceFileService.removeDir(this.dbInstallDirectory);\n }).then(() => {\n // copy imported databases\n return this.file.copyDir(importFolderFullPath, 'databases', this.dbInstallParentDirectory, this.dbInstallDirectoryName);\n }).then(() => {\n // reload databases\n this.databases = null;\n return this.loadDatabases();\n }).then(() => executePromiseChain(this.getCallbacksFor('postImport'), [importFolderFullPath, zipMeta]))\n .then(() => {\n if (backupZip) {\n return this.deviceFileService.removeFile(backupZip);\n }\n }, (reason) => {\n if (backupZip) {\n return this.importDB(backupZip, false)\n .then(() => {\n this.deviceFileService.removeFile(backupZip);\n return Promise.reject(reason);\n });\n }\n return Promise.reject(reason);\n });\n }).then(resolve, reject)\n .catch(noop)\n .then(() => {\n return this.deviceFileService.removeDir(cordova.file.cacheDirectory + importFolder);\n });\n });\n }\n\n /**\n * @param {string} dataModelName Name of the data model\n * @param {string} entityName Name of the entity\n * @param {string} operation Name of the operation (READ, INSERT, UPDATE, DELETE)\n * @returns {boolean} returns true, if the given operation can be performed as per configuration.\n */\n public isOperationAllowed(dataModelName: string, entityName: string, operation: string): Promise<boolean> {\n return this.getStore(dataModelName, entityName).then( store => {\n if (!store) {\n return false;\n }\n if (operation === 'READ') {\n return store.entitySchema.pushConfig.readEnabled;\n }\n if (operation === 'INSERT') {\n return store.entitySchema.pushConfig.insertEnabled;\n }\n if (operation === 'UPDATE') {\n return store.entitySchema.pushConfig.updateEnabled;\n }\n if (operation === 'DELETE') {\n return store.entitySchema.pushConfig.deleteEnabled;\n }\n return false;\n }).catch(() => {\n return false;\n });\n }\n\n public loadDatabases(): Promise<any> {\n let newDatabasesCreated = false;\n if (this.databases) {\n return Promise.resolve(this.databases);\n } else {\n if (isIos()) {\n this.dbInstallDirectoryName = 'LocalDatabase';\n this.dbInstallParentDirectory = cordova.file.applicationStorageDirectory + 'Library/';\n } else {\n this.dbInstallDirectoryName = 'databases';\n this.dbInstallParentDirectory = cordova.file.applicationStorageDirectory;\n }\n this.dbInstallDirectory = this.dbInstallParentDirectory + this.dbInstallDirectoryName;\n\n this.databases = new Map<string, DBInfo>();\n return this.setUpDatabases()\n .then( flag => newDatabasesCreated = flag)\n .then(() => this.loadDBSchemas())\n .then(metadata => this.loadNamedQueries(metadata))\n .then(metadata => this.loadOfflineConfig(metadata))\n .then(metadata => {\n return Promise.all(_.map(metadata, dbMetadata => {\n return this.openDatabase(dbMetadata)\n .then(database => {\n this.databases[dbMetadata.schema.name] = database;\n });\n }));\n }).then(() => {\n return this.getStore('wavemaker', 'key-value').then( store => {\n this.localKeyValueService.init(store);\n return this.localKeyValueService.get(NEXT_ID_COUNT).then(val => {\n this.nextId = val || this.nextId;\n });\n });\n }).then(() => {\n if (newDatabasesCreated) {\n return this.normalizeData()\n .then(() => this.disableForeignKeys())\n .then(() => this.deviceService.getAppBuildTime())\n .then(dbSeedCreationTime => {\n return executePromiseChain(_.map(this.callbacks, 'onDbCreate'), [{\n 'databases' : this.databases,\n 'dbCreatedOn' : _.now(),\n 'dbSeedCreatedOn' : dbSeedCreationTime\n }]);\n }).then(() => this.databases);\n } else {\n return this.databases;\n }\n });\n }\n }\n\n /**\n * using this function one can listen events such as onDbCreate, 'preExport' and 'postImport'.\n *\n * @param {object} listener an object with functions mapped to event names.\n */\n public registerCallback(listener: CallBack) {\n this.callbacks.push(listener);\n }\n\n public setLogSQl(flag: boolean) {\n this._logSql = flag;\n }\n\n /**\n * Deletes any existing databases (except wavemaker db) and copies the databases that are packaged with the app.\n *\n * @returns {*}\n */\n private cleanAndCopyDatabases(): Promise<any> {\n const dbSeedFolder = cordova.file.applicationDirectory + META_LOCATION;\n return this.file.createDir(this.dbInstallParentDirectory, this.dbInstallDirectoryName, false)\n .catch(noop)\n .then(() => this.deviceFileService.listFiles(this.dbInstallDirectory, /.+\\.db$/))\n .then(files => {\n if (files && files.length > 0) {\n return Promise.all(files.map(f => {\n if (f['name'] !== 'wavemaker.db') {\n return this.file.removeFile(this.dbInstallDirectory, f['name']);\n }\n }));\n }\n })\n .then( () => this.deviceFileService.listFiles(dbSeedFolder, /.+\\.db$/))\n .then(files => {\n if (files && files.length > 0) {\n return this.file.createDir(this.dbInstallParentDirectory, this.dbInstallDirectoryName, false)\n .catch(noop)\n .then(() => Promise.all(files.map(\n f => this.file.copyFile(dbSeedFolder, f['name'], this.dbInstallDirectory, f['name'])\n ))\n );\n }\n });\n }\n\n // Picks essential details from the given schema.\n private compactEntitySchema(schema, entity, transformedSchemas): EntityInfo {\n const reqEntity = transformedSchemas[entity['entityName']] as EntityInfo;\n reqEntity.entityName = entity['entityName'];\n reqEntity.name = entity['name'];\n reqEntity.columns = [];\n entity.columns.forEach(col => {\n let defaultValue = col.columnValue ? col.columnValue.defaultValue : '';\n const type = col.sqlType;\n if (type === 'number' && !col.primaryKey) {\n defaultValue = _.isEmpty(defaultValue) ? null : _.parseInt(defaultValue);\n } else if (type === 'boolean') {\n defaultValue = _.isEmpty(defaultValue) ? null : (defaultValue === 'true' ? 1 : 0);\n } else {\n defaultValue = _.isEmpty(defaultValue) ? null : defaultValue;\n }\n reqEntity.columns.push({\n name: col['name'],\n fieldName: col['fieldName'],\n generatorType: col['generatorType'],\n sqlType: col['sqlType'],\n primaryKey: col['primaryKey'],\n defaultValue: defaultValue\n });\n });\n\n _.forEach(entity.relations, r => {\n let targetEntitySchema, targetEntity, col, sourceColumn, mapping;\n if (r.cardinality === 'ManyToOne' || r.cardinality === 'OneToOne') {\n targetEntity = _.find(schema.tables, t => t.name === r.targetTable);\n mapping = r.mappings[0];\n if (targetEntity) {\n targetEntity = targetEntity.entityName;\n sourceColumn = mapping.sourceColumn;\n col = reqEntity.columns.find(column => column.name === sourceColumn);\n targetEntitySchema = schema.tables.find(table => table.name === r.targetTable);\n const foreignRelation = {\n sourceFieldName: r.fieldName,\n targetEntity: targetEntity,\n targetTable: r.targetTable,\n targetColumn: mapping.targetColumn,\n targetPath: '',\n dataMapper: [],\n targetFieldName: targetEntitySchema.columns.find(column => column.name === mapping.targetColumn).fieldName\n };\n foreignRelation.targetPath = foreignRelation.sourceFieldName + '.' + foreignRelation.targetFieldName;\n foreignRelation.dataMapper = _.chain(targetEntitySchema.columns)\n .keyBy(childCol => foreignRelation.sourceFieldName + '.' + childCol.fieldName)\n .mapValues(childCol => new ColumnInfo(childCol.name, childCol.fieldName)).value();\n col.foreignRelations = col.foreignRelations || [];\n col.foreignRelations.push(foreignRelation);\n }\n }\n });\n return reqEntity;\n }\n\n // Loads necessary details of queries\n private compactQueries(queriesByDB): Map<string, NamedQueryInfo> {\n const queries = new Map<string, NamedQueryInfo>();\n\n _.forEach(queriesByDB.queries, queryData => {\n let query, params;\n if (queryData.nativeSql && queryData.type === 'SELECT') {\n query = _.isEmpty(queryData.offlineQueryString) ? queryData.queryString : queryData.offlineQueryString;\n params = _.map(this.extractQueryParams(query), p => {\n const paramObj = _.find(queryData.parameters, {'name': p});\n return {\n name: paramObj.name,\n type: paramObj.type,\n variableType: paramObj.variableType\n };\n });\n params.forEach(p => query = _.replace(query, ':' + p.name, '?'));\n queries[queryData.name] = {\n name: queryData.name,\n query: query,\n params: params,\n response: {\n properties: _.map(queryData.response.properties, p => {\n p.nameInUpperCase = p.name.toUpperCase();\n return p;\n })\n }\n };\n }\n });\n return queries;\n }\n\n // Loads necessary details of remote schema\n private compactSchema(schema): DBInfo {\n const dbInfo = new DBInfo();\n const transformedSchemas = new Map<string, EntityInfo>();\n schema.tables.forEach(entitySchema => {\n transformedSchemas[entitySchema.entityName] = {};\n });\n schema.tables.forEach(entitySchema => {\n this.compactEntitySchema(schema, entitySchema, transformedSchemas);\n });\n dbInfo.schema.name = schema.name;\n dbInfo.schema.isInternal = schema.isInternal;\n dbInfo.schema.entities = transformedSchemas;\n return dbInfo;\n }\n\n private convertBoolToInt(bool: boolean) {\n return _.toString(bool) === 'true' ? 1 : 0;\n }\n\n private convertIntToBool(int: number) {\n return int ? true : false;\n }\n\n /**\n * Turns off foreign keys\n * @returns {*}\n */\n private disableForeignKeys() {\n return Promise.all(_.map(this.databases, db =>\n this.executeSQLQuery(db.schema.name, 'PRAGMA foreign_keys = OFF')\n ));\n }\n\n /**\n * Executes SQL query;\n *\n * @param dbName\n * @param sql\n * @param params\n * @returns {*}\n */\n public executeSQLQuery(dbName, sql, params?: any[], logOutput?: boolean) {\n const db = this.databases[dbName];\n if (db) {\n return db.sqliteObject.executeSql(sql, params, logOutput)\n .then(result => {\n const data = [],\n rows = result.rows;\n for (let i = 0; i < rows.length; i++) {\n data.push(rows.item(i));\n }\n return {\n 'rowsAffected' : result.rowsAffected,\n 'rows' : data\n };\n });\n }\n return Promise.reject(`No Database with name ${dbName} found`);\n }\n\n // get the params of the query or procedure.\n private extractQueryParams(query) {\n let params, aliasParams;\n aliasParams = query.match(/[^\"'\\w\\\\]:\\s*\\w+\\s*/g) || [];\n if (aliasParams.length) {\n params = aliasParams.map(x => (/[=|\\W]/g.test(x)) ? x.replace(/\\W/g, '').trim() : x.trim());\n } else {\n params = null;\n }\n return params;\n }\n\n /**\n * Returns a promise that is resolved with application info such as packageName, appName, versionNumber, versionCode.\n * @returns {*}\n */\n private getAppInfo() {\n const appInfo = {\n name: '',\n packageName: '',\n versionNumber: '',\n versionCode: null\n };\n return this.appVersion.getPackageName()\n .then(packageName => {\n appInfo.packageName = packageName;\n return this.appVersion.getAppName();\n }).then(appName => {\n appInfo.name = appName;\n return this.appVersion.getVersionNumber();\n }).then(versionNumber => {\n appInfo.versionNumber = versionNumber;\n return this.appVersion.getVersionCode();\n }).then(versionCode => {\n appInfo.versionCode = (versionCode as any);\n return appInfo;\n });\n }\n\n private getCallbacksFor(event: string): any[] {\n return this.callbacks.map(c => {\n if (c[event]) {\n return c[event].bind(c);\n }\n return null;\n });\n }\n\n /**\n * Searches for the files with given regex in 'www/metadata/app'and returns an array that contains the JSON\n * content present in each file.\n *\n * @param {string} fileNameRegex regex pattern to search for files.\n * @returns {*} A promise that is resolved with an array\n */\n private getMetaInfo(fileNameRegex: RegExp) {\n const folder = cordova.file.applicationDirectory + META_LOCATION + '/';\n return this.deviceFileService.listFiles(folder, fileNameRegex)\n .then(files => Promise.all(_.map(files, f => {\n return new Promise((resolve, reject) => {\n // Cordova File reader has buffer issues with large files.\n // so, using ajax to retrieve local json\n $.getJSON(transformFileURI(folder) + f['name'], data => resolve(data));\n });\n }))\n );\n }\n\n /**\n * Returns true, if the given entity's data is bundled along with application installer.\n * @param dataModelName name of the data model\n * @param entityName name of the entity\n * @returns {Promise<any>}\n */\n public isBundled(dataModelName, entityName): Promise<any> {\n return this.getStore(dataModelName, entityName).then(store => {\n return store.entitySchema.pullConfig.pullType === PullType.BUNDLED;\n });\n }\n\n /**\n * Loads local database schemas from *_data_model.json.\n *\n * @returns {*} A promise that is resolved with metadata.\n */\n private loadDBSchemas(): Promise<Map<string, DBInfo>> {\n return this.getMetaInfo(/.+_dataModel\\.json$/)\n .then( (schemas: any) => {\n const metadata = new Map<string, DBInfo>();\n schemas = isArray(schemas) ? schemas : [schemas];\n schemas.push(OFFLINE_WAVEMAKER_DATABASE_SCHEMA);\n schemas.map(s => this.compactSchema(s))\n .forEach(s => {\n metadata[s.schema.name] = s;\n });\n return metadata;\n });\n }\n\n /**\n * Load named queries from *_query.json.\n *\n * @param {*} metadata\n * @returns {*} A promise that is resolved with metadata\n */\n private loadNamedQueries(metadata) {\n return this.getMetaInfo(/.+_query\\.json$/)\n .then((queriesByDBs: any) => {\n queriesByDBs = _.isArray(queriesByDBs) ? queriesByDBs : [queriesByDBs];\n queriesByDBs.map(e => metadata[e.name].queries = this.compactQueries(e));\n return metadata;\n });\n }\n\n /**\n * Load offline configuration from *_offline.json.\n *\n * @param {*} metadata\n * @returns {*} A promise that is resolved with metadata\n */\n private loadOfflineConfig(metadata) {\n return this.getMetaInfo(/.+_offline\\.json$/)\n .then(configs => {\n _.forEach(configs, config => {\n _.forEach(config.entities, entityConfig => {\n const entitySchema = _.find(metadata[config.name].schema.entities, schema => schema.name === entityConfig.name);\n _.assignIn(entitySchema, entityConfig);\n });\n });\n return metadata;\n });\n }\n\n private logSql(sqliteObject: SQLiteObject) {\n const logger = console,\n originalExecuteSql = sqliteObject.executeSql;\n sqliteObject.executeSql = (sql, params, logOutput?: boolean) => {\n const startTime = _.now();\n return originalExecuteSql.call(sqliteObject, sql, params).then(result => {\n if (logOutput || this._logSql) {\n const objArr = [],\n rowCount = result.rows.length;\n for (let i = 0; i < rowCount; i++) {\n objArr.push(result.rows.item(i));\n }\n logger.debug('SQL \"%s\" with params %O took [%d ms]. And the result is %O', sql, params, _.now() - startTime, objArr);\n }\n return result;\n }, error => {\n logger.error('SQL \"%s\" with params %O failed with error message %s', sql, params, error.message);\n return Promise.reject(error);\n });\n };\n }\n\n /**\n * SQLite does not support boolean data. Instead of using boolean values, data will be changed to 0 or 1.\n * If the value is 'true', then 1 is set as value. If value is not 1 nor null, then column value is set as 0.\n * @param dbName\n * @param tableName\n * @param colName\n * @returns {*}\n */\n private normalizeBooleanData(dbName, tableName, colName) {\n const trueTo1Query = `update ${escapeName(tableName)} set ${escapeName(colName)} = 1 where ${escapeName(colName)} = 'true'`,\n exceptNullAnd1to0Query = `update ${escapeName(tableName)} set ${escapeName(colName)} = 0\n where ${escapeName(colName)} is not null and ${escapeName(colName)} != 1`;\n return this.executeSQLQuery(dbName, trueTo1Query)\n .then(() => this.executeSQLQuery(dbName, exceptNullAnd1to0Query));\n }\n\n /**\n * Converts data to support SQLite.\n * @returns {*}\n */\n private normalizeData() {\n return Promise.all(_.map(this.databases, database => {\n return Promise.all(_.map(database.schema.entities, entitySchema => {\n return Promise.all(_.map(entitySchema.columns, column => {\n if (column.sqlType === 'boolean') {\n return this.normalizeBooleanData(database.schema.name, entitySchema.name, column.name);\n }\n }));\n }));\n }));\n }\n\n private openDatabase(database: DBInfo) {\n return this.sqlite.create({\n name: database.schema.name + '.db',\n location: 'default'\n }).then(sqliteObject => {\n database.sqliteObject = sqliteObject;\n this.logSql(sqliteObject);\n const storePromises = _.map(database.schema.entities, entitySchema => {\n const store = new LocalDBStore(this.deviceFileService,\n entitySchema,\n this.file,\n this,\n sqliteObject\n );\n return store.create();\n });\n return Promise.all(storePromises).then(stores => {\n _.forEach(stores, store => {\n database.stores[store.entitySchema.entityName] = store;\n });\n return database;\n });\n });\n }\n\n /**\n * When app is opened for first time after a fresh install or update, then old databases are removed and\n * new databases are created using bundled databases.\n *\n * @returns {*} a promise that is resolved with true, if the databases are newly created or resolved with false\n * if existing databases are being used.\n */\n private setUpDatabases(): Promise<boolean> {\n return this.deviceService.getAppBuildTime()\n .then((buildTime) => {\n const dbInfo = this.deviceService.getEntry('database') || {};\n if (!dbInfo.lastBuildTime || dbInfo.lastBuildTime !== buildTime) {\n return this.cleanAndCopyDatabases()\n .then(() => {\n dbInfo.lastBuildTime = buildTime;\n return this.deviceService.storeEntry('database', dbInfo);\n }).then(() => true);\n }\n return false;\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observer } from 'rxjs';\n\nimport { executePromiseChain, getAbortableDefer, isString, noop } from '@wm/core';\nimport { NetworkService } from '@wm/mobile/core';\n\nimport { LocalDBManagementService } from './local-db-management.service';\nimport { LocalKeyValueService } from './local-key-value.service';\nimport { LocalDBStore } from '../models/local-db-store';\n\ndeclare const _;\n\nexport interface Change {\n id?: number;\n errorMessage?: string;\n hasError: number;\n operation: string;\n params: any;\n service: string;\n}\n\nexport interface FlushContext {\n clear: () => Promise<any>;\n get: (key: string) => any;\n save: () => Promise<any>;\n}\n\nexport interface Worker {\n onAddCall?: (change: Change) => (Promise<any> | void);\n preFlush?: (context: FlushContext) => (Promise<any> | void);\n postFlush?: (pushInfo: PushInfo, context: FlushContext) => (Promise<any> | void);\n preCall?: (change: Change) => (Promise<any> | void);\n postCallError?: (change: Change, error: any) => (Promise<any> | void);\n postCallSuccess?: (change: Change, response: any) => (Promise<any> | void);\n transformParamsToMap?: (change: Change) => (Promise<any> | void);\n transformParamsFromMap?: (change: Change) => (Promise<any> | void);\n}\n\nexport interface PullInfo {\n databases: Array<any>;\n totalRecordsToPull: number;\n totalPulledRecordCount: number;\n startTime: Date;\n endTime: Date;\n}\n\nexport interface PushInfo {\n completedTaskCount: number;\n endTime: Date;\n failedTaskCount: number;\n inProgress: boolean;\n startTime: Date;\n successfulTaskCount: number;\n totalTaskCount: number;\n}\n\nexport abstract class PushService {\n public abstract push(change: Change): Promise<any>;\n}\n\nexport const CONTEXT_KEY = 'changeLogService.flushContext';\nexport const LAST_PUSH_INFO_KEY = 'changeLogService.lastPushInfo';\n\n@Injectable({providedIn: 'root'})\nexport class ChangeLogService {\n static readonly SERVICE_NAME = 'ChangeLogService';\n\n private workers: Worker[] = [];\n\n private flushContext: FlushContext;\n\n private currentPushInfo: PushInfo;\n\n private deferredFlush;\n\n constructor(private localDBManagementService: LocalDBManagementService,\n private localKeyValueService: LocalKeyValueService,\n private pushService: PushService,\n private networkService: NetworkService) {\n this.currentPushInfo = {} as PushInfo;\n this.addWorker(new FlushTracker(this, this.localKeyValueService, this.currentPushInfo));\n }\n\n\n /**\n * adds a service call to the log. Call will be invoked in next flush.\n *\n * @Param {string} name of service (This should be available through $injector)\n * @Param {string} name of method to invoke.\n * @Param {object} params\n */\n public add(service: string, operation: string, params: any): Promise<void> {\n const change: Change = {\n service: service,\n operation: operation,\n params: params,\n hasError: 0\n };\n return executePromiseChain(this.getWorkers('transformParamsToMap'), [change])\n .then(() => executePromiseChain(this.getWorkers('onAddCall'), [change]))\n .then(() => {\n change.params = JSON.stringify(change.params);\n return this.getStore().then(store => store.add(change)).then(noop);\n });\n }\n\n public addWorker(worker: Worker) {\n this.workers.push(worker);\n }\n\n /**\n * Clears the current log.\n */\n public clearLog() {\n return this.getStore().then( s => s.clear());\n }\n\n /**\n * Flush the current log. If a flush is already running, then the promise of that flush is returned back.\n */\n public flush(progressObserver: Observer<PushInfo>): Promise<PushInfo> {\n let flushPromise;\n if (!this.deferredFlush) {\n this.deferredFlush = getAbortableDefer();\n this.createContext().then(context => {\n this.flushContext = context;\n return executePromiseChain(this.getWorkers('preFlush'), [this.flushContext]);\n })\n .then(() => {\n flushPromise = this._flush(progressObserver);\n this.deferredFlush.onAbort = () => flushPromise.abort();\n return flushPromise;\n })\n .catch(noop)\n .then(() => {\n Promise.resolve().then(() => {\n if (this.currentPushInfo.totalTaskCount === this.currentPushInfo.completedTaskCount) {\n return this.flushContext.clear().then(() => this.flushContext = null);\n }\n }).then(() => {\n progressObserver.complete();\n if (this.currentPushInfo.failedTaskCount > 0) {\n this.deferredFlush.reject(this.currentPushInfo);\n } else {\n this.deferredFlush.resolve(this.currentPushInfo);\n }\n this.deferredFlush = null;\n }).then(() => {\n return executePromiseChain(this.getWorkers('postFlush'), [this.currentPushInfo, this.flushContext]);\n });\n });\n }\n return this.deferredFlush.promise;\n }\n\n /**\n * Returns the complete change list\n */\n public getChanges() {\n return this.getStore().then( s => s.filter(undefined, 'id', {\n offset: 0,\n limit: 500\n })).then(changes => {\n changes.forEach(change => {\n change.params = JSON.parse(change.params);\n });\n return changes;\n });\n }\n\n\n /**\n * @returns {array} an array of changes that failed with error.\n */\n public getErrors(): Promise<Change[]> {\n return this.getStore().then( s => s.filter([{\n attributeName: 'hasError',\n attributeValue: 1,\n attributeType: 'NUMBER',\n filterCondition: 'EQUALS'\n }]));\n }\n\n\n public getLastPushInfo(): Promise<PushInfo> {\n return this.localKeyValueService.get(LAST_PUSH_INFO_KEY)\n .then(info => {\n if (isString(info.startTime)) {\n info.startTime = new Date(info.startTime);\n }\n if (isString(info.endTime)) {\n info.endTime = new Date(info.endTime);\n }\n return info;\n });\n }\n /**\n * @returns {number} number of changes that are pending to push.\n */\n public getLogLength(): Promise<number> {\n return this.getStore().then( s => s.count([{\n attributeName: 'hasError',\n attributeValue: 0,\n attributeType: 'NUMBER',\n filterCondition: 'EQUALS'\n }]));\n }\n\n /*\n * Retrieves the entity store to use by ChangeLogService.\n */\n public getStore(): Promise<LocalDBStore> {\n return this.localDBManagementService.getStore('wavemaker', 'offlineChangeLog');\n }\n\n /**\n * Returns true, if a flush process is in progress. Otherwise, returns false.\n *\n * @returns {boolean} returns true, if a flush process is in progress. Otherwise, returns false.\n */\n public isFlushInProgress(): boolean {\n return !(_.isUndefined(this.deferredFlush) || _.isNull(this.deferredFlush));\n }\n\n /**\n * Stops the ongoing flush process.\n *\n * @returns {object} a promise that is resolved when the flush process is stopped.\n */\n public stop(): Promise<void> {\n return new Promise( resolve => {\n if (this.deferredFlush) {\n this.deferredFlush.promise.catch().then(resolve);\n this.deferredFlush.promise.abort();\n } else {\n resolve();\n }\n });\n }\n\n private createContext() {\n return this.localKeyValueService.get(CONTEXT_KEY)\n .then(context => {\n context = context || {};\n return {\n 'clear' : () => {\n context = {};\n return this.localKeyValueService.remove(CONTEXT_KEY);\n },\n 'get' : key => {\n let value = context[key];\n if (!value) {\n value = {};\n context[key] = value;\n }\n return value;\n },\n 'save' : () => this.localKeyValueService.put(CONTEXT_KEY, context)\n };\n });\n }\n\n // Flushes the complete log one after another.\n private _flush(progressObserver: Observer<PushInfo>, defer?: any) {\n defer = defer || getAbortableDefer();\n if (defer.isAborted) {\n return Promise.resolve();\n }\n this.getNextChange()\n .then(change => {\n if (change) {\n change.params = JSON.parse(change.params);\n return this.flushChange(change);\n }\n })\n .then(change => {\n progressObserver.next(this.currentPushInfo);\n if (change) {\n return this.getStore()\n .then(s => s.delete(change.id))\n .then(() => this._flush(progressObserver, defer));\n } else {\n defer.resolve();\n }\n }, change => {\n if (this.networkService.isConnected()) {\n change.hasError = 1;\n change.params = JSON.stringify(change.params);\n this.getStore()\n .then(s => s.save(change))\n .then(() => this._flush(progressObserver, defer));\n } else {\n let connectPromise = this.networkService.onConnect();\n defer.promise.catch(function () {\n if (connectPromise) {\n connectPromise.abort();\n }\n });\n connectPromise.then(() => {\n this._flush(progressObserver, defer);\n connectPromise = null;\n });\n }\n });\n return defer.promise;\n }\n\n private flushChange(change: Change): Promise<Change> {\n const self = this;\n return executePromiseChain(this.getWorkers('preCall'), [change])\n .then(() => change.hasError ? Promise.reject(change.errorMessage) : '')\n .then(() => executePromiseChain(this.getWorkers('transformParamsFromMap'), [change]))\n .then(() => this.pushService.push(change))\n .then(function() {\n return executePromiseChain(_.reverse(self.getWorkers('postCallSuccess')), [change, arguments])\n .then(() => change);\n }).catch(function() {\n if (self.networkService.isConnected()) {\n return executePromiseChain(_.reverse(self.getWorkers('postCallError')), [change, arguments])\n .catch(noop).then(() => Promise.reject(change));\n }\n return Promise.reject(change);\n });\n }\n\n\n\n // Flushes the first registered change.\n private getNextChange(): Promise<Change> {\n const filterCriteria = [{\n attributeName: 'hasError',\n attributeValue: 0,\n attributeType: 'NUMBER',\n filterCondition: 'EQUALS'\n }];\n return this.getStore().then(s => s.filter(filterCriteria, 'id', {\n offset: 0,\n limit: 1\n })).then((changes: Array<Change>) => {\n return changes && changes[0];\n });\n }\n\n private getWorkers(type) {\n return _.map(this.workers, w => w[type] && w[type].bind(w));\n }\n}\n\nclass FlushTracker {\n\n private flushContext: FlushContext;\n private logger: any;\n\n constructor(private changeLogService: ChangeLogService,\n private localKeyValueService: LocalKeyValueService,\n private pushInfo: PushInfo) {\n this.logger = window.console;\n }\n\n public onAddCall(change: Change) {\n this.logger.debug('Added the following call %o to log.', change);\n }\n\n public preFlush(flushContext: FlushContext) {\n this.pushInfo.totalTaskCount = 0;\n this.pushInfo.successfulTaskCount = 0;\n this.pushInfo.failedTaskCount = 0;\n this.pushInfo.completedTaskCount = 0;\n this.pushInfo.inProgress = true;\n this.pushInfo.startTime = new Date();\n this.flushContext = flushContext;\n this.logger.debug('Starting flush');\n return this.changeLogService.getStore().then(store => {\n return store.count([{\n attributeName: 'hasError',\n attributeValue: 0,\n attributeType: 'NUMBER',\n filterCondition: 'EQUALS'\n }]);\n }).then(count => this.pushInfo.totalTaskCount = count);\n }\n\n public postFlush(stats: PushInfo , flushContext: FlushContext) {\n this.logger.debug('flush completed. {Success : %i , Error : %i , completed : %i, total : %i }.',\n this.pushInfo.successfulTaskCount, this.pushInfo.failedTaskCount, this.pushInfo.completedTaskCount, this.pushInfo.totalTaskCount);\n this.pushInfo.inProgress = false;\n this.pushInfo.endTime = new Date();\n this.localKeyValueService.put(LAST_PUSH_INFO_KEY, this.pushInfo);\n this.flushContext = null;\n }\n\n public preCall(change: Change) {\n this.logger.debug('%i. Invoking call %o', (1 + this.pushInfo.completedTaskCount), change);\n }\n\n public postCallError(change: Change, response: any) {\n this.pushInfo.completedTaskCount++;\n this.pushInfo.failedTaskCount++;\n this.logger.error('call failed with the response %o.', response);\n return this.flushContext.save();\n }\n\n public postCallSuccess(change: Change, response: any) {\n this.pushInfo.completedTaskCount++;\n this.pushInfo.successfulTaskCount++;\n this.logger.debug('call returned the following response %o.', response);\n return this.flushContext.save();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { LocalDBManagementService } from './local-db-management.service';\nimport { LocalDBStore } from '../models/local-db-store';\n\ndeclare const _;\n\n@Injectable({providedIn: 'root'})\nexport class LocalDbService {\n static readonly SERVICE_NAME = 'LocalDbService';\n private searchTableData;\n private searchTableDataWithQuery;\n private getDistinctDataByFields;\n\n constructor(private localDBManagementService: LocalDBManagementService) {\n this.searchTableData = this.readTableData.bind(this);\n this.searchTableDataWithQuery = this.readTableData.bind(this);\n this.getDistinctDataByFields = this.readTableData.bind(this);\n }\n\n public getStore(params: any): Promise<LocalDBStore> {\n return this.localDBManagementService.getStore(params.dataModelName, params.entityName);\n }\n\n /**\n * Method to insert data into the specified table. This modification will be added to offline change log.\n *\n * @param {object} params\n * Object containing name of the project & table data to be inserted.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public insertTableData(params: any, successCallback?: any, failureCallback?: any, options = {}) {\n this.getStore(params).then(store => {\n const isPKAutoIncremented = (store.primaryKeyField && store.primaryKeyField.generatorType === 'identity');\n if (_.get(options, 'resetPrimaryKey') !== false && isPKAutoIncremented && params.data[store.primaryKeyName]) {\n delete params.data[store.primaryKeyName];\n }\n return store.add(params.data).then(() => {\n store.refresh(params.data).then(successCallback);\n });\n }).catch(failureCallback);\n }\n\n /**\n * Method to insert multi part data into the specified table. This modification will be added to offline change log.\n *\n * @param {object} params\n * Object containing name of the project & table data to be inserted.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public insertMultiPartTableData(params: any, successCallback?: any, failureCallback?: any, options = {}) {\n this.getStore(params).then(store => {\n store.serialize(params.data).then(data => {\n params.data = data;\n this.insertTableData(params, successCallback, failureCallback, options);\n });\n }).catch(failureCallback);\n }\n\n /**\n * Method to update data in the specified table. This modification will be added to offline change log.\n *\n * @param {object} params\n * Object containing name of the project & table data to be updated.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public updateTableData(params: any, successCallback?: any, failureCallback?: any) {\n this.getStore(params).then(store => {\n return store.save(params.data)\n .then(() => {\n store.refresh(params.data).then(successCallback);\n });\n }).catch(failureCallback);\n }\n\n /**\n * Method to update multi part data in the specified table. This modification will be added to offline change log.\n *\n * @param {object} params\n * Object containing name of the project & table data to be updated.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public updateMultiPartTableData(params: any, successCallback?: any, failureCallback?: any) {\n const data = (params.data && params.data.rowData) || params.data;\n this.getStore(params).then(store => {\n return store.save(data);\n }).then(() => {\n if (successCallback) {\n successCallback(data);\n }\n }).catch(failureCallback);\n }\n\n /**\n * Method to delete data in the specified table. This modification will be added to offline change log.\n *\n * @param {object} params\n * Object containing name of the project & table data to be inserted.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public deleteTableData(params: any, successCallback?: any, failureCallback?: any) {\n this.getStore(params).then(store => {\n const pkField = store.primaryKeyField,\n id = params[pkField.fieldName] || params[pkField.name] || (params.data && params.data[pkField.fieldName]) || params.id;\n store.delete(id).then(successCallback);\n }).catch(failureCallback);\n }\n\n /**\n * Method to read data from a specified table.\n *\n * @param {object} params\n * Object containing name of the project & table data to be inserted.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public readTableData(params: any, successCallback?: any, failureCallback?: any) {\n this.getStore(params).then(store => {\n let filter = params.filter((filterGroup, filterFields) => {\n this.convertFieldNameToColumnName(store, filterGroup, filterFields);\n }, true);\n // convert wm_bool function with boolean value to 0/1\n filter = filter.replace(/wm_bool\\('true'\\)/g, 1).replace(/wm_bool\\('false'\\)/g, 0);\n return store.count(filter).then(totalElements => {\n const sort = params.sort.split('=')[1];\n return store.filter(filter, sort, {\n offset: (params.page - 1) * params.size,\n limit: params.size\n }).then(data => {\n const totalPages = Math.ceil(totalElements / params.size);\n successCallback({\n 'content' : data,\n 'first' : (params.page === 1),\n 'last' : (params.page === totalPages),\n 'number' : (params.page - 1),\n 'numberOfElements': data.length,\n 'size' : params.size,\n 'sort' : {\n 'sorted' : !!sort,\n 'unsorted' : !sort\n },\n 'totalElements' : totalElements,\n 'totalPages' : totalPages\n });\n });\n });\n }).catch(failureCallback);\n }\n\n private escapeName(name: string): string {\n if (name) {\n name = name.replace(/\"/g, '\"\"');\n return '\"' + name.replace(/\\./g, '\".\"') + '\"';\n }\n return name;\n }\n\n // returns the columnName appending with the schema name.\n private getColumnName(store, fieldName) {\n if (store.fieldToColumnMapping[fieldName]) {\n const columnName = this.escapeName(store.fieldToColumnMapping[fieldName]);\n if (columnName.indexOf('.') < 0) {\n return this.escapeName(store.entitySchema.name) + '.' + columnName;\n }\n return columnName;\n }\n return fieldName;\n }\n\n private convertFieldNameToColumnName(store: LocalDBStore, filterGroup: any, options?: any) {\n _.forEach(filterGroup.rules, rule => {\n if (rule.rules) {\n this.convertFieldNameToColumnName(store, rule);\n } else {\n rule.target = this.getColumnName(store, rule.target);\n }\n });\n // handling the scenario where variable options can have filterField. For example: search filter query\n if (options && options.filterFields) {\n options.filterFields = _.mapKeys(options.filterFields, (v, k) => {\n return this.getColumnName(store, k);\n });\n }\n }\n}\n","import { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { noop } from '@wm/core';\nimport { DeviceFileService } from '@wm/mobile/core';\n\nimport { Change, ChangeLogService, FlushContext, Worker } from '../change-log.service';\nimport { CallBack, LocalDBManagementService } from '../local-db-management.service';\n\ndeclare const _;\n\nconst STORE_KEY = 'offlineFileUpload';\n\nexport class FileHandler implements Worker {\n\n private fileStore;\n private logger = window.console;\n\n public preFlush(context: FlushContext) {\n this.fileStore = context.get(STORE_KEY);\n }\n\n /**\n * Replaces all local paths with the remote path using mappings created during 'uploadToServer'.\n */\n public preCall(change: Change) {\n if (change.service === 'DatabaseService') {\n change.params.data = _.mapValues(change.params.data, v => {\n const remoteUrl = this.fileStore[v];\n if (remoteUrl) {\n this.logger.debug('swapped file path from %s -> %s', v, remoteUrl);\n return remoteUrl;\n }\n return v;\n });\n }\n }\n\n public postCallSuccess(change: Change, response: any) {\n if (change.service === 'OfflineFileUploadService'\n && change.operation === 'uploadToServer') {\n const remoteFile = JSON.parse(response[0].text)[0];\n /*\n * A mapping will be created between local path and remote path.\n * This will be used to resolve local paths in entities.\n */\n this.fileStore[change.params.file] = remoteFile.path;\n this.fileStore[change.params.file + '?inline'] = remoteFile.inlinePath;\n }\n }\n\n}\n\nexport class UploadedFilesImportAndExportService implements CallBack {\n private uploadDir;\n\n constructor(\n private changeLogService: ChangeLogService,\n private deviceFileService: DeviceFileService,\n private localDBManagementService: LocalDBManagementService,\n private file: File\n ) {\n\n }\n\n public preExport(folderToExport: string, meta: any): Promise<any> {\n // copy offline uploads\n const uploadFullPath = this.deviceFileService.getUploadDirectory(),\n lastIndexOfSep = uploadFullPath.lastIndexOf('/'),\n uploadParentDir = uploadFullPath.substring(0, lastIndexOfSep + 1),\n uploadDirName = uploadFullPath.substring(lastIndexOfSep + 1);\n meta.uploadDir = uploadFullPath;\n return this.file.copyDir(uploadParentDir, uploadDirName, folderToExport, 'uploads');\n }\n\n public postImport(importedFolder: string, meta: any): Promise<any> {\n const uploadFullPath = this.deviceFileService.getUploadDirectory(),\n lastIndexOfSep = uploadFullPath.lastIndexOf('/'),\n uploadParentDir = uploadFullPath.substring(0, lastIndexOfSep + 1),\n uploadDirName = uploadFullPath.substring(lastIndexOfSep + 1);\n this.uploadDir = uploadFullPath;\n return this.file.checkDir(importedFolder, 'uploads')\n .then(() => {\n return this.deviceFileService.removeDir(uploadFullPath)\n .then(() => this.file.copyDir(importedFolder, 'uploads', uploadParentDir, uploadDirName))\n .then(() => this.updateChanges(meta));\n }, noop);\n }\n\n /**\n * returns back the changes that were logged.\n * @param page page number\n * @param size size of page\n * @returns {*}\n */\n private getChanges(page: number, size: number): Promise<Change[]> {\n return this.changeLogService.getStore().then(strore => {\n return (strore.filter([], 'id', {\n offset: (page - 1) * size,\n limit: size\n })) as Promise<Change[]>;\n });\n }\n\n /**\n * If this is a database change, then it will replace old upload directory with the current upload directory\n * and its corresponding owner object, if it has primary key.\n *\n * @param change\n * @param oldUploadDir\n * @param uploadDir\n * @returns {*}\n */\n private updateDBChange(change: Change, oldUploadDir: string, uploadDir: string) {\n const modifiedProperties = {},\n entityName = change.params.entityName,\n dataModelName = change.params.dataModelName;\n change.params.data = _.mapValues(change.params.data, function (v, k) {\n let mv = v, isModified = false;\n if (_.isString(v)) {\n mv = _.replace(v, oldUploadDir, uploadDir);\n isModified = !_.isEqual(mv, v);\n } else if (_.isObject(v) && v.wmLocalPath) {\n // insertMultiPartData and updateMultiPartData\n mv = _.replace(v.wmLocalPath, oldUploadDir, uploadDir);\n isModified = !_.isEqual(mv, v.wmLocalPath);\n }\n if (isModified) {\n modifiedProperties[k] = mv;\n }\n return mv;\n });\n if (!_.isEmpty(modifiedProperties)) {\n this.localDBManagementService.getStore(dataModelName, entityName)\n .then(store => {\n // If there is a primary for the entity, then update actual row with the modifications\n if (store.primaryKeyField && store.primaryKeyField.generatorType === 'identity') {\n const primaryKeyName = store.primaryKeyName;\n const primaryKey = change.params.data[primaryKeyName];\n return store.get(primaryKey)\n .then(obj => store.save(_.assignIn(obj, modifiedProperties)));\n }\n }).then(() => {\n change.params = JSON.stringify(change.params);\n return this.changeLogService.getStore().then( store => store.save(change));\n });\n }\n }\n\n /**\n * This function check this change to update old upload directory path.\n *\n * @param change\n * @param metaInfo\n * @returns {*}\n */\n private updateChange(change: Change, metaInfo: any) {\n change.params = JSON.parse(change.params);\n if (change.service === 'OfflineFileUploadService'\n && change.operation === 'uploadToServer') {\n change.params.file = _.replace(change.params.file, metaInfo.uploadDir, this.uploadDir);\n change.params = JSON.stringify(change.params);\n return this.changeLogService.getStore().then( store => store.save(change));\n }\n if (change.service === 'DatabaseService') {\n return this.updateDBChange(change, metaInfo.uploadDir, this.uploadDir);\n }\n }\n\n /**\n * This function will visit all the changes and modify them, if necessary.\n * @param metaInfo\n * @param page\n * @returns {*}\n */\n private updateChanges(metaInfo: any, page = 1): Promise<any> {\n const size = 10;\n return this.getChanges(page, size)\n .then(changes => {\n if (changes && changes.length > 0) {\n return Promise.all(changes.map(change => this.updateChange(change, metaInfo)));\n }\n }).then(result => {\n if (result && result.length === size) {\n return this.updateChanges(metaInfo, page + 1);\n }\n });\n }\n}\n","import { Change, FlushContext, Worker } from '../change-log.service';\nimport { LocalDBStore } from '../../models/local-db-store';\nimport { LocalDBManagementService } from '../local-db-management.service';\n\ndeclare const _;\n\nconst STORE_KEY = 'errorBlockerStore';\n\nexport class ErrorBlocker implements Worker {\n\n private errorStore;\n\n constructor(private localDBManagementService: LocalDBManagementService) {\n }\n\n public preFlush(context: FlushContext) {\n this.errorStore = context.get(STORE_KEY);\n }\n\n // block all calls related to the error entities\n public preCall(change: Change) {\n if (change && change.service === 'DatabaseService') {\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n switch (change.operation) {\n case 'insertTableData':\n case 'insertMultiPartTableData':\n case 'updateTableData':\n case 'updateMultiPartTableData':\n return this.localDBManagementService.getStore(dataModelName, entityName).then( store => {\n this.blockCall(store, change, dataModelName, entityName, change.params.data);\n });\n case 'deleteTableData':\n return this.localDBManagementService.getStore(dataModelName, entityName).then( store => {\n this.blockCall(store, change, dataModelName, entityName, change.params);\n });\n }\n }\n }\n\n // store error entity id\n public postCallSuccess(change: Change) {\n if (change && change.service === 'DatabaseService') {\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n return this.localDBManagementService.getStore(dataModelName, entityName).then( store => {\n const id = change['dataLocalId'] || change.params.data[store.primaryKeyName];\n if (!(_.isUndefined(id) || _.isNull(id))) {\n this.removeError(dataModelName, entityName, id);\n }\n });\n }\n }\n\n // store error entity id\n public postCallError(change: Change) {\n if (change && change.service === 'DatabaseService') {\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n return this.localDBManagementService.getStore(dataModelName, entityName).then( store => {\n const id = change['dataLocalId'] || (change.params.data && change.params.data[store.primaryKeyName]) || change.params[store.primaryKeyName] || change.params.id;\n if (!(_.isUndefined(id) || _.isNull(id))) {\n this.recordError(dataModelName, entityName, id);\n }\n });\n }\n }\n\n /**\n * If there is an earlier call of the object or its relations that got failed, then this call will be\n * marked for discard.\n *\n * @param store LocalDBStore\n * @param change change to block\n * @param dataModelName\n * @param entityName\n * @param data\n */\n private blockCall(store: LocalDBStore, change: Change, dataModelName: string, entityName: string, data: any) {\n if (change.hasError === 0) {\n this.checkForPreviousError(store, change, dataModelName, entityName, data);\n store.entitySchema.columns.forEach(col => {\n if (col.foreignRelations) {\n col.foreignRelations.some(foreignRelation => {\n if (data[foreignRelation.sourceFieldName]) {\n this.blockCall(store, change, dataModelName, foreignRelation.targetEntity, data[foreignRelation.sourceFieldName]);\n } else if (data[col.fieldName]) {\n this.checkForPreviousError(store, change, dataModelName, foreignRelation.targetEntity, data, col.fieldName);\n }\n return change.hasError === 1;\n });\n }\n });\n }\n }\n\n // A helper function to check for earlier failures.\n private checkForPreviousError(store: LocalDBStore, change: Change, dataModelName: string, entityName: string, data: any, key?: any) {\n const primaryKey = key || store.primaryKeyName;\n if (this.hasError(dataModelName, entityName, data[primaryKey])) {\n change.hasError = 1;\n change.errorMessage = `Blocked call due to error in previous call of entity [ ${entityName} ] with id [ ${data[primaryKey]} ]`;\n }\n }\n\n private hasError(dataModelName: string, entityName: string, id: any) {\n if (this.errorStore[dataModelName]\n && this.errorStore[dataModelName][entityName]\n && this.errorStore[dataModelName][entityName][id]) {\n return true;\n }\n return false;\n }\n\n // Removes entity identifier from error list.\n private removeError(dataModelName: string, entityName: string, id: any) {\n if (this.errorStore[dataModelName]\n && this.errorStore[dataModelName][entityName]\n && this.errorStore[dataModelName][entityName][id]) {\n delete this.errorStore[dataModelName][entityName][id];\n }\n }\n\n // Save error entity identifier.\n private recordError(dataModelName: string, entityName: string, id: any) {\n this.errorStore[dataModelName] = this.errorStore[dataModelName] || {};\n this.errorStore[dataModelName][entityName] = this.errorStore[dataModelName][entityName] || {};\n this.errorStore[dataModelName][entityName][id] = true;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { isDefined, noop } from '@wm/core';\n\nimport { Change, FlushContext, Worker } from './../change-log.service';\nimport { LocalDBManagementService } from './../local-db-management.service';\nimport { LocalDBStore } from './../../models/local-db-store';\n\nconst STORE_KEY = 'idConflictResolution';\n\n/**\n * In offline database, a insert could generate the Id of an entity. During flush, id of that entity might get changed.\n * Due to that, relationship inconsistency arises. To prevent that, wherever this entity is referred in the next flush\n * call, Id has to be replaced with that of new one.\n */\n@Injectable()\nexport class IdResolver implements Worker {\n\n private idStore;\n private logger;\n private transactionLocalId;\n\n constructor(private localDBManagementService: LocalDBManagementService) {\n this.logger = window.console;\n }\n\n public preFlush(context: FlushContext) {\n this.idStore = context.get(STORE_KEY);\n }\n\n // Exchane Ids, Before any database operation.\n public preCall(change: Change) {\n if (change && change.service === 'DatabaseService') {\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n switch (change.operation) {\n case 'insertTableData':\n case 'insertMultiPartTableData':\n change.params.skipLocalDB = true ;\n return this.localDBManagementService.getStore(dataModelName, entityName)\n .then(store => {\n const primaryKeyName = store.primaryKeyName;\n if (primaryKeyName) {\n this.transactionLocalId = change.params.data[primaryKeyName];\n change['dataLocalId'] = this.transactionLocalId;\n }\n return this.exchangeIds(store, dataModelName, entityName, change.params.data)\n .then(() => {\n if (store.primaryKeyField && store.primaryKeyField.generatorType === 'identity') {\n delete change.params.data[primaryKeyName];\n } else {\n const relationalPrimaryKeyValue = store.getValue(change.params.data, store.primaryKeyName);\n // for the data referring to the relational table based on primary key assign the primaryField values to the relationalPrimaryKeyValue\n if (isDefined(relationalPrimaryKeyValue)) {\n change.params.data[primaryKeyName] = relationalPrimaryKeyValue;\n if (this.transactionLocalId !== null) {\n this.pushIdToStore(dataModelName, entityName, this.transactionLocalId, relationalPrimaryKeyValue);\n }\n }\n this.transactionLocalId = null;\n }\n });\n });\n case 'updateTableData':\n case 'updateMultiPartTableData':\n case 'deleteTableData':\n return this.localDBManagementService.getStore(dataModelName, entityName).then(store => {\n // on update call, passing id to exchangeId as change.params id(local value 10000000+) is not updated with the latest id from db\n this.exchangeId(store, dataModelName, entityName, change.params, 'id');\n if (change.params.data) {\n return this.exchangeIds(store, dataModelName, entityName, change.params.data);\n }\n });\n }\n }\n }\n // After every database insert, track the Id change.\n public postCallSuccess(change: Change, response: any) {\n if (change && change.service === 'DatabaseService'\n && (change.operation === 'insertTableData' || change.operation === 'insertMultiPartTableData')\n && this.transactionLocalId) {\n const data = response[0].body;\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n return this.localDBManagementService.getStore(dataModelName, entityName).then(store => {\n this.pushIdToStore(dataModelName, entityName, this.transactionLocalId, data[store.primaryKeyName]);\n return store.delete(this.transactionLocalId).catch(noop).then(() => {\n this.transactionLocalId = null;\n return store.save(data);\n });\n });\n }\n }\n // store error entity id\n public postCallError(change: Change) {\n if (change && change.service === 'DatabaseService'\n && (change.operation === 'insertTableData' || change.operation === 'insertMultiPartTableData')\n && this.transactionLocalId) {\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n return this.localDBManagementService.getStore(dataModelName, entityName).then(store => {\n change.params.data[store.primaryKeyName] = this.transactionLocalId;\n });\n }\n }\n\n private getEntityIdStore(dataModelName: string, entityName: string) {\n this.idStore[dataModelName] = this.idStore[dataModelName] || {};\n this.idStore[dataModelName][entityName] = this.idStore[dataModelName][entityName] || {};\n return this.idStore[dataModelName][entityName];\n }\n\n // if local id is different, then create a mapping for exchange.\n private pushIdToStore(dataModelName: string, entityName: string, transactionLocalId: any, remoteId: any) {\n if (transactionLocalId !== remoteId) {\n this.getEntityIdStore(dataModelName, entityName)[transactionLocalId] = remoteId;\n this.logger.debug('Conflict found for entity (%s) with local id (%i) and remote Id (%i)', entityName, transactionLocalId, remoteId);\n }\n }\n\n private logResolution(entityName: string, localId: any, remoteId: any) {\n this.logger.debug('Conflict resolved found for entity (%s) with local id (%i) and remote Id (%i)', entityName, localId, remoteId);\n }\n\n // Exchange primary key of the given entity\n private exchangeId(store: LocalDBStore, dataModelName: string, entityName: string, data?: any, keyName?: string) {\n const primaryKeyName = keyName || store.primaryKeyName;\n const entityIdStore = this.getEntityIdStore(dataModelName, entityName);\n if (data && primaryKeyName) {\n const localId = data[primaryKeyName];\n let remoteId = localId;\n while (entityIdStore[remoteId]) {\n remoteId = entityIdStore[remoteId];\n }\n if (remoteId !== localId) {\n data[primaryKeyName] = remoteId;\n this.logResolution(entityName, localId, remoteId);\n }\n }\n }\n\n // Looks primary key changes in the given entity or in the relations\n private exchangeIds(store: LocalDBStore, dataModelName: string, entityName: string, data: any): Promise<any> {\n this.exchangeId(store, dataModelName, entityName, data);\n const exchangeIdPromises = [];\n store.entitySchema.columns.forEach(col => {\n if (col.foreignRelations) {\n col.foreignRelations.forEach( foreignRelation => {\n if (data[col.fieldName]) {// if id value\n this.exchangeId(store, dataModelName, foreignRelation.targetEntity, data, col.fieldName);\n }\n if (data[foreignRelation.sourceFieldName]) {// if object reference\n exchangeIdPromises.push(this.localDBManagementService.getStore(dataModelName, foreignRelation.targetEntity)\n .then(refStore => {\n return this.exchangeIds(refStore, dataModelName, foreignRelation.targetEntity, data[foreignRelation.sourceFieldName]);\n }));\n }\n });\n }\n });\n return Promise.all(exchangeIdPromises);\n }\n}\n","import { DeviceFileService } from '@wm/mobile/core';\n\nimport { Change, Worker } from '../change-log.service';\nimport { LocalDBManagementService } from '../local-db-management.service';\n\ndeclare const _;\n\nexport class MultiPartParamTransformer implements Worker {\n\n constructor(\n private deviceFileService: DeviceFileService,\n private localDBManagementService: LocalDBManagementService\n ) {}\n\n public postCallSuccess(change: Change) {\n if (change && change.service === 'DatabaseService') {\n switch (change.operation) {\n case 'insertMultiPartTableData':\n case 'updateMultiPartTableData':\n // clean up files\n _.forEach(change.params.data, v => {\n if (_.isObject(v) && v.wmLocalPath) {\n this.deviceFileService.removeFile(v.wmLocalPath);\n }\n });\n break;\n }\n }\n }\n\n public transformParamsFromMap(change: Change) {\n if (change && change.service === 'DatabaseService') {\n switch (change.operation) {\n case 'insertMultiPartTableData':\n case 'updateMultiPartTableData':\n return this.localDBManagementService.getStore(change.params.dataModelName, change.params.entityName)\n .then( store => {\n // construct Form data\n return store.deserialize(change.params.data).then(function (formData) {\n change.params.data = formData;\n });\n });\n }\n }\n }\n\n public transformParamsToMap(change: Change) {\n if (change && change.service === 'DatabaseService') {\n switch (change.operation) {\n case 'insertMultiPartTableData':\n case 'updateMultiPartTableData':\n return this.localDBManagementService.getStore(change.params.dataModelName, change.params.entityName)\n .then( store => {\n return store.serialize(change.params.data).then(function (map) {\n change.params.data = map;\n /**\n * As save method called with FormData object, empty row is inserted.\n * Since FormData is converted to map, update the record details now.\n */\n store.save(_.mapValues(map, function (v) {\n return (_.isObject(v) && v.wmLocalPath) || v;\n }));\n return map;\n });\n });\n }\n }\n }\n}\n","import { from } from 'rxjs';\n\nimport { LVService } from '@wavemaker/variables';\n\nimport { NetworkService } from '@wm/mobile/core';\nimport { AbstractHttpService, noop, triggerFn } from '@wm/core';\n\nimport { ColumnInfo, ForeignRelationInfo } from '../models/config';\nimport { LocalDBStore } from '../models/local-db-store';\nimport { ChangeLogService } from '../services/change-log.service';\nimport { LocalDBManagementService } from '../services/local-db-management.service';\nimport { LocalDbService } from '../services/local-db.service';\nimport { WM_LOCAL_OFFLINE_CALL } from './utils';\n\ndeclare const _;\n\nconst apiConfiguration = [{\n 'name' : 'insertTableData',\n 'type' : 'INSERT'\n }, {\n 'name' : 'insertMultiPartTableData',\n 'type' : 'INSERT'\n }, {\n 'name' : 'updateTableData',\n 'type' : 'UPDATE'\n }, {\n 'name' : 'updateMultiPartTableData',\n 'type' : 'UPDATE'\n }, {\n 'name' : 'deleteTableData',\n 'type' : 'DELETE'\n }, {\n 'name' : 'readTableData',\n 'type' : 'READ',\n 'saveResponse': true\n }, {\n 'name' : 'searchTableData',\n 'type' : 'READ',\n 'saveResponse': true\n }, {\n 'name' : 'searchTableDataWithQuery',\n 'type' : 'READ',\n 'saveResponse': true\n }, {\n 'name' : 'getDistinctDataByFields',\n 'type' : 'READ',\n 'saveResponse': false\n }];\n\nlet isOfflineBehaviorAdded = false;\n\nexport class LiveVariableOfflineBehaviour {\n\n private onlineDBService = LVService;\n\n constructor(\n private changeLogService: ChangeLogService,\n private httpService: AbstractHttpService,\n private localDBManagementService: LocalDBManagementService,\n private networkService: NetworkService,\n private offlineDBService: LocalDbService\n ) {}\n\n public add () {\n if (!isOfflineBehaviorAdded) {\n isOfflineBehaviorAdded = true;\n const onlineHandler = this.httpService.sendCallAsObservable;\n if (onlineHandler) {\n this.httpService.sendCallAsObservable = (reqParams, params): any => {\n if (!params && _.get(reqParams, 'url')) {\n params = {url: reqParams.url};\n }\n // reqParams will contain the full path of insert/update call which will be processed again in parseConfig method\n // and will be appended again with '/services/./.' which will result in deployedUrl + '/service/./.' + '/service/./.' which is wrong.\n // Hence passing url in params\n const clonedParamsUrl = _.clone(params.url);\n params = _.extend(params, reqParams);\n const operation = _.find(apiConfiguration, {name: _.get(params, 'operation')});\n if (this.networkService.isConnected() || params.onlyOnline || !operation || !params.dataModelName) {\n return from(this.remoteDBcall(operation, onlineHandler, params));\n }\n // converting promise to observable as LVService returns a observable\n return from(this.localDBManagementService.isOperationAllowed(params.dataModelName, params.entityName, operation.type)\n .then(isAllowedInOffline => {\n if (!isAllowedInOffline) {\n return this.remoteDBcall(operation, onlineHandler, params);\n } else {\n let cascader;\n return Promise.resolve().then(() => {\n if (!params.isCascadingStopped &&\n (operation.name === 'insertTableData'\n || operation.name === 'updateTableData')) {\n return this.prepareToCascade(params).then(c => cascader = c);\n }\n }).then(() => {\n return new Promise((resolve, reject) => {\n this.localDBcall(operation, params, resolve, reject, clonedParamsUrl);\n });\n }).then( (response: any) => {\n if (cascader) {\n return cascader.cascade().then(() => {\n return this.getStore(params).then(store => {\n return store.refresh(response.body);\n }).then(data => {\n // data includes parent and child data.\n if (response && response.body) {\n response.body = data;\n }\n return response;\n });\n });\n }\n return response;\n });\n }\n }));\n };\n }\n }\n }\n\n public getStore(params: any): Promise<LocalDBStore> {\n return this.localDBManagementService.getStore(params.dataModelName, params.entityName);\n }\n\n // set hasBlob flag on params when blob field is present\n private hasBlob(store) {\n const blobColumns = _.filter(store.entitySchema.columns, {\n 'sqlType' : 'blob'\n });\n return !!blobColumns.length;\n }\n\n /*\n * During offline, LocalDBService will answer to all the calls. All data modifications will be recorded\n * and will be reported to DatabaseService when device goes online.\n */\n private localDBcall(operation, params, successCallback, failureCallback, clonedParamsUrl): Promise<any> {\n return new Promise((resolve, reject) => {\n this.offlineDBService[operation.name](params, response => {\n if (operation.type === 'READ') {\n resolve(response);\n } else {\n // add to change log\n params.onlyOnline = true;\n params.url = clonedParamsUrl;\n return this.changeLogService.add('DatabaseService', operation.name, params)\n .then(() => resolve(response));\n }\n });\n }).then((response) => {\n response = {body : response, type: WM_LOCAL_OFFLINE_CALL};\n triggerFn(successCallback, response);\n return response;\n }, failureCallback);\n }\n\n /*\n * During online, all read operations data will be pushed to offline database. Similarly, Update and Delete\n * operations are synced with the offline database.\n */\n private remoteDBcall(operation, onlineHandler, params): Promise<any> {\n return new Promise((resolve, reject) => {\n onlineHandler.call(this.httpService, params).subscribe(response => {\n if (response && response.type) {\n if (!params.skipLocalDB) {\n this.offlineDBService.getStore(params).then((store) => {\n if (operation.type === 'READ' && operation.saveResponse) {\n store.saveAll(response.body.content);\n } else if (operation.type === 'INSERT') {\n params = _.clone(params);\n params.data = _.clone(response.body);\n this.offlineDBService[operation.name](params, noop, noop, {\n resetPrimaryKey: false\n });\n } else {\n this.offlineDBService[operation.name](params, noop, noop);\n }\n }).catch(noop);\n }\n resolve(response);\n }\n }, (err) => {\n reject(err);\n });\n });\n }\n\n /**\n * Finds out the nested objects to save and prepares a cloned params.\n */\n private prepareToCascade(params): Promise<any> {\n return this.getStore(params).then(store => {\n const childObjectPromises = [];\n _.forEach(params.data, (v, k) => {\n let column: ColumnInfo,\n foreignRelation: ForeignRelationInfo,\n childParams;\n // NOTE: Save only one-to-one relations for cascade\n if (_.isObject(v) && !_.isArray(v)) {\n column = store.entitySchema.columns.find(c => {\n if (c.primaryKey && c.foreignRelations) {\n foreignRelation = c.foreignRelations.find( f => f.sourceFieldName === k);\n }\n return !!foreignRelation;\n });\n }\n if (column) {\n childParams = _.cloneDeep(params);\n childParams.entityName = foreignRelation.targetEntity;\n childParams.data = v;\n const childPromise = this.getStore(childParams).then(childStore => {\n const parent = params.data;\n const targetColumns = childStore.entitySchema.columns.find(c => c.name === foreignRelation.targetColumn);\n if (targetColumns && targetColumns.foreignRelations) {\n const parentFieldName = targetColumns.foreignRelations.find( f => f.targetTable === store.entitySchema.name).sourceFieldName;\n childParams.data[parentFieldName] = parent;\n }\n parent[k] = null;\n childParams.onlyOnline = false;\n childParams.isCascadingStopped = true;\n childParams.hasBlob = this.hasBlob(childStore);\n childParams.url = '';\n return () => {\n return Promise.resolve().then(() => {\n const primaryKeyValue = childStore.getValue(childParams.data, childStore.primaryKeyField.fieldName);\n return primaryKeyValue ? childStore.get(primaryKeyValue) : null;\n }).then(object => {\n let operation;\n if (object) {\n operation = childParams.hasBlob ? 'updateMultiPartTableData' : 'updateTableData';\n } else {\n operation = childParams.hasBlob ? 'insertMultiPartTableData' : 'insertTableData';\n }\n return this.onlineDBService[operation](childParams).toPromise();\n });\n };\n });\n childObjectPromises.push(childPromise);\n }\n });\n return Promise.all(childObjectPromises).then(result => {\n return {\n cascade: () => Promise.all(result.map(fn => fn()))\n };\n });\n });\n }\n}\n","import { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { DeviceFileService, DeviceFileUploadService, IUploadResponse, NetworkService, UploadRequest } from '@wm/mobile/core';\n\nimport { ChangeLogService } from '../services/change-log.service';\n\nlet isOfflineBehaviourAdded = false;\n\nexport class FileUploadOfflineBehaviour {\n\n constructor(\n private changeLogService: ChangeLogService,\n private deviceFileService: DeviceFileService,\n private deviceFileUploadService: DeviceFileUploadService,\n private file: File,\n private networkService: NetworkService,\n private uploadDir: string\n ) {\n\n }\n\n public add() {\n if (isOfflineBehaviourAdded) {\n return;\n }\n isOfflineBehaviourAdded = true;\n const orig = this.deviceFileUploadService.upload;\n this.deviceFileUploadService['uploadToServer'] = orig;\n this.deviceFileUploadService.upload = (url: string, fileParamName: string, localPath: string, fileName?: string, params?: any, headers?: any): Promise<IUploadResponse> => {\n if (this.networkService.isConnected()) {\n return orig.call(this.deviceFileUploadService, url, fileParamName, localPath, fileName, params, headers);\n } else {\n return this.uploadLater(url, fileParamName, localPath, fileName, params, headers).then(response => {\n return {\n text: JSON.stringify(response),\n headers: null,\n response: response\n };\n });\n }\n };\n }\n\n public uploadLater(url: string, fileParamName: string, localPath: string, fileName?: string, params?: any, headers?: any): Promise<any> {\n const i = localPath.lastIndexOf('/'),\n soureDir = localPath.substring(0, i),\n soureFile = localPath.substring(i + 1),\n destFile = this.deviceFileService.appendToFileName(soureFile),\n filePath = this.uploadDir + '/' + destFile;\n return this.file.copyFile(soureDir, soureFile, this.uploadDir, destFile)\n .then(() => {\n return this.changeLogService.add('OfflineFileUploadService', 'uploadToServer', {\n file: filePath,\n ftOptions: {\n fileKey: fileParamName,\n fileName: fileName\n },\n params: params,\n headers: headers,\n serverUrl: url,\n deleteOnUpload: true\n });\n }).then(() => {\n return [{\n fileName: soureFile,\n path: filePath,\n length: 0,\n success: true,\n inlinePath: filePath + '?inline'\n }];\n });\n }\n}\n","import { Observable, from } from 'rxjs';\n\nimport { AbstractHttpService } from '@wm/core';\nimport { NetworkService } from '@wm/mobile/core';\n\nimport { ChangeLogService } from '../services/change-log.service';\nimport { LocalDBManagementService } from '../services/local-db-management.service';\nimport { WM_LOCAL_OFFLINE_CALL } from './utils';\n\ndeclare const _;\nconst NUMBER_REGEX = /^\\d+(\\.\\d+)?$/;\nlet isOfflineBehaviourAdded = false;\nexport class NamedQueryExecutionOfflineBehaviour {\n\n constructor(\n private changeLogService: ChangeLogService,\n private httpService: AbstractHttpService,\n private localDBManagementService: LocalDBManagementService,\n private networkService: NetworkService\n ) {\n\n }\n\n public add () {\n if (isOfflineBehaviourAdded) {\n return;\n }\n isOfflineBehaviourAdded = true;\n const orig = this.httpService.sendCallAsObservable;\n this.httpService.sendCallAsObservable = (reqParams: any, params?: any): Observable<any> => {\n if (!params && _.get(reqParams, 'url')) {\n params = {url: reqParams.url};\n }\n if (!this.networkService.isConnected() && params.url.indexOf('/queryExecutor/') > 0) {\n return from(this.executeLocally(params));\n } else {\n return orig.call(this.httpService, reqParams, params);\n }\n };\n }\n\n private executeLocally(params: any): Promise<any> {\n const url = params.url,\n hasUrlParams = url.indexOf('?') > 0,\n dbName = this.substring(url, 'services/', '/queryExecutor'),\n queryName = this.substring(url, 'queries/', hasUrlParams ? '?' : undefined),\n urlParams = hasUrlParams ? this.getHttpParamMap(this.substring(url, '?', undefined)) : {},\n dataParams = this.getHttpParamMap(params.dataParams),\n queryParams = _.extend(urlParams, dataParams);\n return this.localDBManagementService.executeNamedQuery(dbName, queryName, queryParams)\n .then(result => {\n const rows = result.rows;\n if (result.rowsAffected) {\n return this.changeLogService.add('WebService', 'invokeJavaService', params)\n .then(() => result.rowsAffected);\n } else {\n return {\n type: WM_LOCAL_OFFLINE_CALL,\n body: {\n totalPages: rows && rows.length > 0 ? 1 : 0,\n totalElements: rows.length,\n first: true,\n sort: null,\n numberOfElements: rows.length,\n last: true,\n size: params.size,\n number: 0,\n content: rows\n }\n };\n }\n });\n }\n\n private substring(source: string, start: string, end: string): string {\n if (start) {\n const startIndex = source.indexOf(start) + start.length,\n endIndex = end ? source.indexOf(end) : undefined;\n return source.substring(startIndex, endIndex);\n }\n return undefined;\n }\n\n private getHttpParamMap(str: string): any {\n const result = {};\n if (str) {\n str = decodeURIComponent(str);\n str.split('&').forEach(c => {\n const csplits = c.split('=');\n if (_.isEmpty(_.trim(csplits[1])) || !NUMBER_REGEX.test(csplits[1])) {\n result[csplits[0]] = csplits[1];\n } else {\n result[csplits[0]] = parseInt(csplits[1], 10);\n }\n });\n }\n return result;\n }\n}\n","import { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { App, noop, triggerFn } from '@wm/core';\nimport { DeviceService, NetworkService } from '@wm/mobile/core';\nimport { SecurityService } from '@wm/security';\n\ndeclare const _;\ndeclare const cordova;\nconst SECURITY_FILE = 'logged-in-user.info';\ndeclare const resolveLocalFileSystemURL;\n\nlet isOfflineBehaviourAdded = false;\n\nexport class SecurityOfflineBehaviour {\n\n private saveSecurityConfigLocally;\n private securityConfig: any;\n\n constructor(\n private app: App,\n private file: File,\n private deviceService: DeviceService,\n private networkService: NetworkService,\n private securityService: SecurityService\n ) {\n this.saveSecurityConfigLocally = _.debounce((config: any) => {\n this._saveSecurityConfigLocally(config);\n }, 1000);\n }\n\n public add() {\n if (isOfflineBehaviourAdded) {\n return;\n }\n isOfflineBehaviourAdded = true;\n const origLoad = this.securityService.load;\n const origAppLogout = this.securityService.appLogout;\n /**\n * Add offline behaviour to SecurityService.getConfig. When offline, this funcation returns security\n * config of last logged-in user will be returned, provided the user did not logout last time.\n *\n * @param successCallback\n * @param failureCallback\n */\n this.securityService.load = (forceFlag?: boolean) => {\n return new Promise((resolve, reject) => {\n if (this.networkService.isConnected()) {\n origLoad.call(this.securityService, forceFlag).then(config => {\n this.securityConfig = config;\n this.saveSecurityConfigLocally(config);\n resolve(this.securityConfig);\n }, reject);\n } else {\n this.readLocalSecurityConfig().then((config = {}) => {\n this.securityConfig = config;\n this.securityService.config = config;\n return config;\n }, () => origLoad.call(this.securityConfig)).then(resolve, reject);\n }\n });\n };\n\n /**\n * When users logs out, local config will be removed. If the user is offline and logs out, then user\n * will be logged out from the app and cookies are invalidated when app goes online next time.\n *\n * @param successCallback\n * @param failureCallback\n */\n this.securityService.appLogout = (successCallback, failureCallback) => {\n this.securityConfig = {\n authenticated: false,\n loggedOut: true,\n securityEnabled: this.securityConfig && this.securityConfig.securityEnabled,\n loggedOutOffline: !this.networkService.isConnected(),\n loginConfig: this.securityConfig && this.securityConfig.loginConfig,\n userInfo: null\n };\n this._saveSecurityConfigLocally(this.securityConfig).catch(noop).then(() => {\n if (this.networkService.isConnected()) {\n origAppLogout.call(this.securityService, successCallback, failureCallback);\n } else {\n location.assign(window.location.origin + window.location.pathname);\n }\n });\n };\n /**\n * @param successCallback\n */\n this.securityService.isAuthenticated = successCallback => {\n triggerFn(successCallback, this.securityConfig.authenticated === true);\n };\n this.deviceService.whenReady().then(() => this.clearLastLoggedInUser());\n /**\n * If the user has chosen to logout while app is offline, then invalidation of cookies happens when\n * app comes online next time.\n */\n this.app.subscribe('onNetworkStateChange', data => {\n if (data.isConnected) {\n this.clearLastLoggedInUser();\n }\n });\n }\n\n private _saveSecurityConfigLocally(config: any): Promise<any> {\n return this.file.writeFile(cordova.file.dataDirectory, SECURITY_FILE, JSON.stringify(config), { replace : true });\n }\n\n private clearLastLoggedInUser() {\n return this.readLocalSecurityConfig().then(config => {\n if (config && config.loggedOutOffline) {\n this.securityService.appLogout(null, null);\n } else if (!this.networkService.isConnected()) {\n this.securityConfig = config || {};\n }\n });\n }\n\n private readLocalSecurityConfig(): Promise<any> {\n // reading the security info from file in dataDirectory but when this file is not available then fetching the config from the app directory\n return new Promise((resolve, reject) => {\n const rootDir = cordova.file.dataDirectory;\n this.file.checkFile(rootDir, SECURITY_FILE).then(() => {\n return this.readFileAsTxt(rootDir, SECURITY_FILE).then(resolve, reject);\n }, () => {\n const folderPath = cordova.file.applicationDirectory + 'www/metadata/app',\n fileName = 'security-config.json';\n return this.readFileAsTxt(folderPath, fileName).then(resolve, reject);\n });\n });\n }\n\n private readFileAsTxt(folderPath, fileName): Promise<any> {\n return this.file.readAsText(folderPath, fileName).then(JSON.parse).catch(noop);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { AbstractHttpService, App, hasCordova, noop } from '@wm/core';\nimport { DeviceFileService, DeviceFileUploadService, DeviceService, NetworkService } from '@wm/mobile/core';\nimport { SecurityService } from '@wm/security';\n\nimport { ChangeLogService } from './services/change-log.service';\nimport { LocalDBManagementService } from './services/local-db-management.service';\nimport { LocalDbService } from './services/local-db.service';\nimport { FileHandler, UploadedFilesImportAndExportService } from './services/workers/file-handler';\nimport { ErrorBlocker } from './services/workers/error-blocker';\nimport { IdResolver } from './services/workers/id-resolver';\nimport { MultiPartParamTransformer } from './services/workers/multi-part-param-transformer';\nimport { LiveVariableOfflineBehaviour } from './utils/live-variable.utils';\nimport { FileUploadOfflineBehaviour } from './utils/file-upload.utils';\nimport { NamedQueryExecutionOfflineBehaviour } from './utils/query-executor.utils';\nimport { SecurityOfflineBehaviour } from './utils/security.utils';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [],\n exports: [],\n providers: [\n // add providers to mobile-runtime module.\n ]\n})\nexport class OfflineModule {\n static initialized = false;\n // Startup services have to be added only once in the app life-cycle.\n static initialize(app: App,\n changeLogService: ChangeLogService,\n deviceService: DeviceService,\n deviceFileService: DeviceFileService,\n deviceFileUploadService: DeviceFileUploadService,\n file: File,\n httpService: AbstractHttpService,\n localDBManagementService: LocalDBManagementService,\n localDbService: LocalDbService,\n networkService: NetworkService,\n securityService: SecurityService) {\n if (this.initialized) {\n return;\n }\n\n deviceService.addStartUpService({\n getServiceName: () => 'OfflineStartupService',\n start: () => {\n if (window['SQLitePlugin']) {\n localDBManagementService.setLogSQl((sessionStorage.getItem('wm.logSql') === 'true') || (sessionStorage.getItem('debugMode') === 'true'));\n (window as any).logSql = (flag = true) => {\n localDBManagementService.setLogSQl(flag);\n sessionStorage.setItem('wm.logSql', flag ? 'true' : 'false');\n };\n (window as any).executeLocalSql = (dbName, query, params?) => {\n localDBManagementService.executeSQLQuery(dbName, query, params, true);\n };\n return localDBManagementService.loadDatabases().then(() => {\n changeLogService.addWorker(new IdResolver(localDBManagementService));\n changeLogService.addWorker(new ErrorBlocker(localDBManagementService));\n changeLogService.addWorker(new FileHandler());\n changeLogService.addWorker(new MultiPartParamTransformer(deviceFileService, localDBManagementService));\n new LiveVariableOfflineBehaviour(changeLogService, httpService, localDBManagementService, networkService, localDbService).add();\n new FileUploadOfflineBehaviour(changeLogService, deviceFileService, deviceFileUploadService, file, networkService, deviceFileService.getUploadDirectory()).add();\n new NamedQueryExecutionOfflineBehaviour(changeLogService, httpService, localDBManagementService, networkService).add();\n localDBManagementService.registerCallback(new UploadedFilesImportAndExportService(changeLogService, deviceFileService, localDBManagementService, file));\n changeLogService.addWorker({\n onAddCall: () => {\n if (!networkService.isConnected()) {\n networkService.disableAutoConnect();\n }\n },\n postFlush: stats => {\n if (stats.totalTaskCount > 0) {\n localDBManagementService.close()\n .catch(noop)\n .then(() => {\n location.assign(window.location.origin + window.location.pathname);\n });\n }\n }\n });\n });\n }\n return Promise.resolve();\n }\n });\n new SecurityOfflineBehaviour(app, file, deviceService, networkService, securityService).add();\n }\n\n\n constructor(\n app: App,\n changeLogService: ChangeLogService,\n deviceService: DeviceService,\n deviceFileService: DeviceFileService,\n deviceFileUploadService: DeviceFileUploadService,\n file: File,\n httpService: AbstractHttpService,\n localDBManagementService: LocalDBManagementService,\n localDbService: LocalDbService,\n networkService: NetworkService,\n securityService: SecurityService\n ) {\n if (hasCordova()) {\n OfflineModule.initialize(app,\n changeLogService,\n deviceService,\n deviceFileService,\n deviceFileUploadService,\n file,\n httpService,\n localDBManagementService,\n localDbService,\n networkService,\n securityService);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n\nimport { DeviceFileUploadService } from '@wm/mobile/core';\nimport { LVService } from '@wavemaker/variables';\n\nimport { Change, PushService } from './change-log.service';\n\n@Injectable()\nexport class PushServiceImpl implements PushService {\n\n constructor(\n private deviceFileUploadService: DeviceFileUploadService\n ) {}\n\n // Returns a promise from the observable.\n private getPromiseFromObs(cb) {\n return new Promise((resolve, reject) => {\n cb.subscribe(response => {\n if (response && response.type) {\n resolve(response);\n }\n }, reject);\n });\n }\n\n public push(change: Change): Promise<any> {\n const params = change.params;\n switch (change.service) {\n case 'DatabaseService':\n switch (change.operation) {\n case 'insertTableData':\n return this.getPromiseFromObs(LVService.insertTableData(change.params, null, null));\n case 'insertMultiPartTableData':\n return this.getPromiseFromObs(LVService.insertMultiPartTableData(change.params, null, null));\n case 'updateTableData':\n return this.getPromiseFromObs(LVService.updateTableData(change.params, null, null));\n case 'updateMultiPartTableData':\n return this.getPromiseFromObs(LVService.updateMultiPartTableData(change.params, null, null));\n case 'deleteTableData':\n return this.getPromiseFromObs(LVService.deleteTableData(change.params, null, null));\n }\n case 'OfflineFileUploadService':\n if (change.operation === 'uploadToServer') {\n return this.deviceFileUploadService['uploadToServer'].call(\n this.deviceFileUploadService,\n params.serverUrl,\n params.ftOptions.fileKey,\n params.file,\n params.ftOptions.fileName,\n params.params,\n params.headers);\n }\n }\n return Promise.reject( `${change.service} service with operation ${change.operation} is not supported for push.`);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observer } from 'rxjs';\n\nimport { $parseExpr, App, defer, getAbortableDefer, noop } from '@wm/core';\nimport { NetworkService } from '@wm/mobile/core';\n\nimport { LiveVariableUtils, LVService } from '@wavemaker/variables';\n\nimport { LocalDBManagementService } from './local-db-management.service';\nimport { PullInfo } from './change-log.service';\nimport { LocalKeyValueService } from './local-key-value.service';\nimport { DBInfo, EntityInfo, PullType } from '../models/config';\n\ndeclare const _, moment;\nconst LAST_PULL_INFO_KEY = 'localDBManager.lastPullInfo';\n\n/**\n * a utility api to abort pull process.\n *\n * @type {{start, add, remove, abort}}\n */\nconst pullProcessManager = (() => {\n const promises = {};\n return {\n start: promise => {\n promise.$$pullProcessId = 'PULL_' + _.now();\n },\n add: (pullPromise: Promise<PullInfo>, promise: Promise<any>) => {\n const pullProcessId = (pullPromise as any).$$pullProcessId;\n if (!promises[pullProcessId]) {\n promises[pullProcessId] = [];\n }\n promises[pullProcessId].push(promise);\n },\n remove: (pullPromise: Promise<PullInfo>, promise: Promise<any>) => {\n const pullProcessId = (pullPromise as any).$$pullProcessId;\n _.remove(promises[pullProcessId], promise);\n if (_.isEmpty(promises[pullProcessId])) {\n delete promises[pullProcessId];\n }\n },\n abort: (pullPromise: Promise<PullInfo>) => {\n const pullProcessId = (pullPromise as any).$$pullProcessId;\n if (promises[pullProcessId]) {\n _.forEach(promises[pullProcessId], function (p) {\n if (p && p.abort) {\n p.abort();\n }\n });\n delete promises[pullProcessId];\n }\n (pullPromise as any).$$isMarkedToAbort = true;\n return pullPromise.catch(function () {\n return 'cancelled';\n });\n }\n };\n})();\n\n/**\n * LocalDBDataPullService has API to pull data from remote Server to local Database.\n */\n@Injectable({providedIn: 'root'})\nexport class LocalDBDataPullService {\n static readonly SERVICE_NAME = 'LocalDBDataPullService';\n constructor(\n private app: App,\n private localDBManagementService: LocalDBManagementService,\n private localKeyValueService: LocalKeyValueService,\n private networkService: NetworkService\n ) {\n // Listen for db creation. When db is created, then initialize last pull info.\n this.localDBManagementService.registerCallback({\n onDbCreate: (info) => {\n this.localKeyValueService.put(LAST_PULL_INFO_KEY, {\n databases: [],\n totalRecordsToPull: 0,\n totalPulledRecordCount: 0,\n startTime: new Date(0),\n endTime: new Date(info.dbSeedCreatedOn)\n });\n }\n });\n }\n\n /**\n * If deltaFieldName is set,last pull time is greater than zero and query used in last pull is same as the\n * query for the current pull, then delta criteria is attached to the query.\n *\n * @param db\n * @param entityName\n * @param query\n * @returns {any}\n */\n private addDeltaCriteria(db: DBInfo, entityName: string, query: string): Promise<string> {\n const entitySchema = db.schema.entities[entityName],\n deltaFieldName = entitySchema.pullConfig.deltaFieldName,\n deltaField = _.find(entitySchema.columns, {'fieldName' : deltaFieldName}) || {};\n\n let isBundledEntity;\n\n if (!_.isEmpty(deltaFieldName)) {\n return this.localDBManagementService.isBundled(db.schema.name, entityName)\n .then(flag => isBundledEntity = flag)\n .then(() => this.getLastPullInfo())\n .then(lastPullInfo => {\n let lastPullTime = (lastPullInfo && lastPullInfo.startTime && lastPullInfo.startTime.getTime());\n const lastPullDBInfo = _.find(lastPullInfo && lastPullInfo.databases, {'name' : db.schema.name}),\n lastPullEntityInfo = _.find(lastPullDBInfo && lastPullDBInfo.entities, {'entityName' : entityName}) || {};\n\n if (!lastPullTime && isBundledEntity) {\n // For bundled entity when there is no last pull, fetch records that got modified after db creation.\n lastPullTime = (lastPullInfo && lastPullInfo.endTime && lastPullInfo.endTime.getTime());\n lastPullEntityInfo.query = query;\n }\n if (lastPullEntityInfo.query === query && lastPullTime > 0) {\n if (_.isEmpty(query)) {\n query = '';\n } else {\n query += ' AND ';\n }\n if (deltaField.sqlType === 'datetime') {\n query += deltaFieldName + ' > \\'' + moment(lastPullTime).utc().format('YYYY-MM-DDTHH:mm:ss') + '\\'';\n } else {\n query += deltaFieldName + ' > ' + lastPullTime;\n }\n }\n return query;\n }, () => Promise.resolve(query));\n }\n return Promise.resolve(query);\n }\n\n /**\n * copies the data from remote db to local db\n * @param {DBInfo} db\n * @param {string} entityName\n * @param {boolean} clearDataBeforePull\n * @param pullPromise\n * @param {Observer<any>} progressObserver\n * @returns {Promise<any>}\n */\n private copyDataFromRemoteDBToLocalDB(db: DBInfo, entityName: string, clearDataBeforePull: boolean, pullPromise: Promise<PullInfo>, progressObserver: Observer<any>) {\n const store = (db as any).stores[entityName],\n entitySchema = db.schema.entities[entityName],\n result = {\n entityName: entityName,\n totalRecordsToPull: 0,\n pulledRecordCount: 0\n };\n\n let inProgress = 0,\n pullComplete = false,\n filter;\n\n return new Promise((resolve, reject) => {\n this.prepareQuery(db, entityName)\n .then(query => {\n (result as any).query = query;\n return this.addDeltaCriteria(db, entityName, query);\n }).then(query => {\n // Clear if clearDataBeforePull is true and delta query is not used\n if (clearDataBeforePull && (result as any).query === query) {\n return store.clear()\n .then(() => {\n return query;\n });\n }\n return query;\n }).then(query => {\n filter = _.isEmpty(query) ? '' : 'q=' + query;\n return this.getTotalRecordsToPull(db, entitySchema, filter, pullPromise);\n }).then(maxNoOfRecords => {\n const pageSize = entitySchema.pullConfig.size || 100,\n maxNoOfPages = Math.ceil(maxNoOfRecords / pageSize);\n\n result.totalRecordsToPull = maxNoOfRecords;\n\n let sort = entitySchema.pullConfig.orderBy;\n sort = (_.isEmpty(sort) ? '' : sort + ',') + store.primaryKeyName;\n\n progressObserver.next(result);\n\n const _progressObserver = { next: data => {\n inProgress++;\n data = _.slice(data, 0, result.totalRecordsToPull - result.pulledRecordCount);\n store.saveAll(data).then(() => {\n result.pulledRecordCount += data ? data.length : 0;\n progressObserver.next(result);\n }).catch(noop)\n .then(() => {\n inProgress--;\n if (inProgress === 0 && pullComplete) {\n resolve(result);\n }\n });\n }, error: null, complete: null\n };\n\n return this._pullEntityData(db, entityName, filter, sort, maxNoOfPages, pageSize, 1, pullPromise, undefined, _progressObserver);\n }).then(null, reject)\n .catch(noop)\n .then(() => {\n pullComplete = true;\n if (inProgress === 0) {\n resolve(result);\n }\n });\n });\n }\n\n // If expression starts with 'bind:', then expression is evaluated and result is returned.\n private evalIfBind(expression: string) {\n if (_.startsWith(expression, 'bind:')) {\n expression = expression.replace(/\\[\\$\\i\\]/g, '[0]');\n return $parseExpr(expression.replace('bind:', ''))(this.app);\n }\n return expression;\n }\n\n /**\n * Executes DatabaseService.countTableDataWithQuery as a promise API.\n * @param params\n * @returns Promise\n */\n private executeDatabaseCountQuery(params: Object): Promise<any> {\n return new Promise((resolve, reject) => {\n LVService.countTableDataWithQuery(params, null, null).subscribe(response => resolve(response.body), reject);\n });\n }\n\n /**\n * Executes DatabaseService.searchTableDataWithQuery as a promise API.\n * @param params\n * @returns Promise\n */\n private executeDatabaseSearchQuery(params: Object): Promise<any> {\n return new Promise((resolve, reject) => {\n return LVService.searchTableDataWithQuery(params, null, null).subscribe(response => resolve(response && response.body && response.body.content), reject);\n });\n }\n\n /**\n * Computes the maximum number of records to pull.\n *\n * @param db\n * @param entitySchema\n * @param filter\n * @param pullPromise\n * @returns {*}\n */\n private getTotalRecordsToPull(db: DBInfo, entitySchema: EntityInfo, filter: string, pullPromise: Promise<PullInfo>): Promise<number> {\n const params = {\n dataModelName: db.schema.name,\n entityName: entitySchema.entityName,\n queryParams: filter\n };\n return this.retryIfNetworkFails(() => {\n return this.executeDatabaseCountQuery(params).then(function (response) {\n const totalRecordCount = response,\n maxRecordsToPull = _.parseInt((entitySchema.pullConfig as any).maxNumberOfRecords);\n if (_.isNaN(maxRecordsToPull) || maxRecordsToPull <= 0 || totalRecordCount < maxRecordsToPull) {\n return totalRecordCount;\n }\n return maxRecordsToPull;\n });\n }, pullPromise);\n }\n\n private prepareQuery(db: DBInfo, entityName: string): Promise<string> {\n let query;\n const entitySchema = db.schema.entities[entityName];\n\n return this.localDBManagementService.isBundled(db.schema.name, entityName)\n .then(isBundledEntity => {\n let hasNullAttributeValue = false;\n if (isBundledEntity || _.isEmpty(entitySchema.pullConfig.query)) {\n query = _.cloneDeep(entitySchema.pullConfig.filter);\n query = _.map(query, v => {\n v.attributeValue = this.evalIfBind(v.attributeValue);\n hasNullAttributeValue = hasNullAttributeValue || _.isNil(v.attributeValue);\n return v;\n });\n if (hasNullAttributeValue) {\n return Promise.reject('Null criteria values are present');\n }\n query = _.sortBy(query, 'attributeName');\n query = LiveVariableUtils.getSearchQuery(query, ' AND ', true);\n } else {\n query = this.evalIfBind(entitySchema.pullConfig.query);\n }\n if (_.isNil(query)) {\n return Promise.resolve(null);\n }\n\n return Promise.resolve(encodeURIComponent(query));\n });\n }\n\n /**\n *\n * @param db\n * @param clearDataBeforePull\n * @param pullPromise\n * @param progressObserver\n * @returns {*}\n */\n private _pullDbData(db: DBInfo, clearDataBeforePull: boolean, pullPromise: Promise<PullInfo>, progressObserver: Observer<any>): Promise<any> {\n const datamodelName = db.schema.name,\n result = {\n name: db.schema.name,\n entities: [],\n totalRecordsToPull: 0,\n pulledRecordCount: 0,\n completedTaskCount: 0,\n totalTaskCount: 0\n };\n\n const storePromises = [];\n\n _.forEach(db.schema.entities, entity => {\n storePromises.push(this.localDBManagementService.getStore(datamodelName, entity.entityName));\n });\n\n return new Promise((resolve, reject) => {\n Promise.all(storePromises)\n .then((stores) => {\n const entities = [];\n stores.forEach(store => {\n const pullConfig = store.entitySchema.pullConfig;\n const pullType = pullConfig.pullType;\n if (pullType === PullType.APP_START || (pullType === PullType.BUNDLED && (pullConfig as any).deltaFieldName)) {\n entities.push(store.entitySchema);\n }\n });\n const pullPromises = _.chain(entities)\n .map(entity => {\n const _progressObserver = {\n next: info => {\n const i = _.findIndex(result.entities, {'entityName': info.entityName});\n if (i >= 0) {\n result.entities[i] = info;\n } else {\n result.entities.push(info);\n }\n result.pulledRecordCount = _.reduce(result.entities, function (sum, entityPullInfo) {\n return sum + entityPullInfo.pulledRecordCount;\n }, 0);\n result.totalRecordsToPull = _.reduce(result.entities, function (sum, entityPullInfo) {\n return sum + entityPullInfo.totalRecordsToPull;\n }, 0);\n progressObserver.next(result);\n }, error: null, complete: null\n };\n return this.copyDataFromRemoteDBToLocalDB(db, entity.entityName, clearDataBeforePull, pullPromise, _progressObserver)\n .then(function (info) {\n result.completedTaskCount++;\n progressObserver.next(result);\n return info;\n }, null);\n }).value();\n\n result.totalTaskCount = pullPromises.length;\n progressObserver.next(result);\n\n Promise.all(pullPromises).then(resolve, reject);\n });\n });\n }\n\n /**\n * Pulls data of the given entity from remote server.\n * @param db\n * @param entityName\n * @param sort\n * @param maxNoOfPages\n * @param pageSize\n * @param currentPage\n * @param filter\n * @param pullPromise\n * @param promise\n * @returns {*}\n */\n private _pullEntityData(db: DBInfo, entityName: string, filter: string, sort, maxNoOfPages: number, pageSize: number, currentPage: number, pullPromise: Promise<PullInfo>, deferred: any, progressObserver?: Observer<any>) {\n const dataModelName = db.schema.name;\n\n if (!deferred) {\n deferred = defer();\n }\n\n if (currentPage > maxNoOfPages) {\n return deferred.resolve();\n }\n const params = {\n dataModelName: dataModelName,\n entityName: entityName,\n page: currentPage,\n size: pageSize,\n data: filter,\n sort: sort,\n onlyOnline: true,\n skipLocalDB: true\n };\n this.retryIfNetworkFails(() => {\n return this.executeDatabaseSearchQuery(params);\n }, pullPromise).then(response => {\n progressObserver.next(response);\n this._pullEntityData(db, entityName, filter, sort, maxNoOfPages, pageSize, currentPage + 1, pullPromise, deferred, progressObserver);\n }, deferred.reject);\n\n return deferred.promise;\n }\n\n\n /**\n * If fn fails and network is not there\n * @param fn\n * @param pullPromise\n * @returns {*}\n */\n private retryIfNetworkFails(fn: Function, pullPromise: Promise<PullInfo>) {\n if ((pullPromise as any).$$isMarkedToAbort) {\n return Promise.reject('aborted');\n }\n const promise = this.networkService.retryIfNetworkFails(fn);\n pullProcessManager.add(pullPromise, promise);\n promise.catch(noop)\n .then(() => {\n pullProcessManager.remove(pullPromise, promise);\n });\n return promise;\n }\n\n /**\n * Tries to cancel the corresponding pull process that gave the given promise.\n * @param promise\n * @returns {any}\n */\n public cancel(promise: Promise<any>) {\n return pullProcessManager.abort(promise);\n }\n\n /**\n * fetches the database from the dbName.\n * @param dbName\n * @returns {Promise<any>}\n */\n public getDb(dbName: string) {\n return this.localDBManagementService.loadDatabases()\n .then(databases => {\n const db = _.find(databases, {'name' : dbName});\n return db || Promise.reject('Local database (' + dbName + ') not found');\n });\n }\n\n /**\n * @returns {any} that has total no of records fetched, start and end timestamps of last successful pull\n * of data from remote server.\n */\n public getLastPullInfo(): Promise<PullInfo> {\n return this.localKeyValueService.get(LAST_PULL_INFO_KEY).then(info => {\n if (_.isString(info.startTime)) {\n info.startTime = new Date(info.startTime);\n }\n if (_.isString(info.endTime)) {\n info.endTime = new Date(info.endTime);\n }\n return info;\n });\n }\n\n /**\n * Clears (based on parameter) and pulls data ('BUNDLED' data based on parameter) from server using the\n * configured rules in offline configuration.\n *\n * @param clearDataBeforePull boolean\n * @param {Observer<any>} progressObserver\n * @returns {any}\n */\n public pullAllDbData(clearDataBeforePull: boolean, progressObserver: Observer<any>): Promise<PullInfo> {\n const deferred = getAbortableDefer(),\n pullInfo = {\n completedTaskCount: 0,\n totalTaskCount: 0,\n inProgress: true,\n databases: [],\n totalRecordsToPull: 0,\n totalPulledRecordCount: 0,\n startTime: new Date(),\n endTime: new Date()\n };\n\n this.localDBManagementService.loadDatabases()\n .then(databases => {\n const dataPullPromises = _.chain(databases).filter(function (db) {\n return !db.schema.isInternal;\n }).map(db => {\n pullProcessManager.start(deferred.promise);\n\n const _progressObserver: Observer<any> = {next: data => {\n const i = _.findIndex(pullInfo.databases, {'name' : data.name});\n if (i >= 0) {\n pullInfo.databases[i] = data;\n } else {\n pullInfo.databases.push(data);\n }\n pullInfo.totalTaskCount = _.reduce(pullInfo.databases, function (sum, dbPullInfo) {\n return sum + dbPullInfo.totalTaskCount;\n }, 0);\n pullInfo.completedTaskCount = _.reduce(pullInfo.databases, function (sum, dbPullInfo) {\n return sum + dbPullInfo.completedTaskCount;\n }, 0);\n pullInfo.totalPulledRecordCount = _.reduce(pullInfo.databases, function (sum, dbPullInfo) {\n return sum + dbPullInfo.pulledRecordCount;\n }, 0);\n pullInfo.totalRecordsToPull = _.reduce(pullInfo.databases, function (sum, dbPullInfo) {\n return sum + dbPullInfo.totalRecordsToPull;\n }, 0);\n progressObserver.next(pullInfo);\n }, error: null, complete: null\n };\n\n return this._pullDbData(db, clearDataBeforePull, deferred.promise, _progressObserver);\n }).value();\n return Promise.all(dataPullPromises);\n }).then(() => {\n pullInfo.endTime = new Date();\n pullInfo.inProgress = false;\n this.localKeyValueService.put(LAST_PULL_INFO_KEY, pullInfo);\n deferred.resolve(pullInfo);\n }, deferred.reject);\n\n return deferred.promise;\n }\n\n /**\n * Clears (based on parameter) and pulls data ('BUNDLED' data based on parameter) of the given database from server using\n * the configured rules in offline configuration.\n *\n * @param {string} databaseName\n * @param {boolean} clearDataBeforePull\n * @param {Observer<any>} progressObserver\n * @returns {Promise}\n */\n public pullDbData(databaseName: string, clearDataBeforePull: boolean, progressObserver: Observer<any>): Promise<any> {\n const deferred = getAbortableDefer();\n\n this.getDb(databaseName).then(db => {\n return this._pullDbData(db, clearDataBeforePull, deferred.promise, progressObserver);\n }).then(deferred.resolve, deferred.reject);\n\n return deferred.promise;\n }\n\n /**\n * Clears (based on parameter) and pulls data of the given entity and database from\n * server using the configured rules in offline configuration.\n * @param databaseName, name of the database from which data has to be pulled.\n * @param entityName, name of the entity from which data has to be pulled\n * @param clearDataBeforePull, if set to true, then data of the entity will be deleted.\n * @param progressObserver, observer the progress values\n */\n public pullEntityData(databaseName: string, entityName: string, clearDataBeforePull: boolean, progressObserver: Observer<any>): Promise<any> {\n const deferred = getAbortableDefer();\n\n this.getDb(databaseName)\n .then((db) => {\n return this.copyDataFromRemoteDBToLocalDB(db, entityName, clearDataBeforePull, deferred.promise, progressObserver);\n }).then(deferred.resolve, deferred.reject);\n\n return deferred.promise;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i3","i4.LocalKeyValueService","i1.LocalDBManagementService","i2.LocalKeyValueService","STORE_KEY","isOfflineBehaviourAdded","i1","i2.ChangeLogService","i4","i5.LocalDBManagementService","i6.LocalDbService","i7","i2.LocalDBManagementService","i3.LocalKeyValueService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../projects/mobile/offline/src/services/local-key-value.service.ts","../../../../projects/mobile/offline/src/utils/utils.ts","../../../../projects/mobile/offline/src/models/local-db-store.ts","../../../../projects/mobile/offline/src/models/config.ts","../../../../projects/mobile/offline/src/services/local-db-management.service.ts","../../../../projects/mobile/offline/src/services/change-log.service.ts","../../../../projects/mobile/offline/src/services/local-db.service.ts","../../../../projects/mobile/offline/src/services/workers/file-handler.ts","../../../../projects/mobile/offline/src/services/workers/error-blocker.ts","../../../../projects/mobile/offline/src/services/workers/id-resolver.ts","../../../../projects/mobile/offline/src/services/workers/multi-part-param-transformer.ts","../../../../projects/mobile/offline/src/utils/live-variable.utils.ts","../../../../projects/mobile/offline/src/utils/file-upload.utils.ts","../../../../projects/mobile/offline/src/utils/query-executor.utils.ts","../../../../projects/mobile/offline/src/utils/security.utils.ts","../../../../projects/mobile/offline/src/offline.module.ts","../../../../projects/mobile/offline/src/services/push.service.ts","../../../../projects/mobile/offline/src/services/local-db-data-pull.service.ts","../../../../projects/mobile/offline/src/index.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { LocalDBStore } from '../models/local-db-store';\n\n@Injectable({providedIn: 'root'})\nexport class LocalKeyValueService {\n static readonly SERVICE_NAME = 'LocalKeyValueService';\n private store: LocalDBStore;\n\n /**\n * retrieves the value mapped to the key.\n *\n * @param {string} key key\n * @returns {object} a promise that is resolved when value is retrieved from store.\n */\n public get(key: string): any {\n return this.fetchEntry(key)\n .then(result => {\n let value;\n if (result && result.length > 0) {\n value = result[0].value;\n if (value) {\n value = JSON.parse(value);\n }\n }\n return value;\n });\n }\n\n /**\n * Initializes the service with the given store.\n *\n * @param {object} storeToUse a store with id, key, value with fields.\n * @returns {object} a promise that is resolved when data is persisted.\n */\n public init(storeToUse: LocalDBStore) {\n this.store = storeToUse;\n }\n\n /**\n * clear data in all databases.\n *\n * @param {string} key key\n * @param {string} value value\n * @returns {object} a promise that is resolved when data is persisted.\n */\n public put(key, value) {\n if (value) {\n value = JSON.stringify(value);\n }\n return this.fetchEntry(key).then(result => {\n if (result && result.length > 0) {\n return this.store.save({\n 'id' : result[0].id,\n 'key' : key,\n 'value' : value\n });\n }\n return this.store.add({\n 'key' : key,\n 'value' : value\n });\n });\n }\n\n /**\n * clear data in all databases.\n *\n * @param {string} key key\n * @returns {object} a promise that is resolved when respective value is removed from store.\n */\n public remove(key) {\n return this.fetchEntry(key).then(result => {\n if (result && result.length > 0) {\n return this.store.delete(result[0].id);\n }\n });\n }\n\n private fetchEntry(key) {\n const filterCriteria = [{\n 'attributeName' : 'key',\n 'attributeValue' : key,\n 'attributeType' : 'STRING',\n 'filterCondition' : 'EQUALS'\n }];\n return this.store.filter(filterCriteria);\n }\n}\n","export const WM_LOCAL_OFFLINE_CALL = 'WM_LOCAL_OFFLINE_CALL';\n\nexport const escapeName = (name) => {\n if (name) {\n name = name.replace(/\"/g, '\"\"');\n return '\"' + name + '\"';\n }\n};\n","import { File } from '@awesome-cordova-plugins/file/ngx';\nimport { SQLiteObject } from '@awesome-cordova-plugins/sqlite/ngx';\n\nimport { convertToBlob, isDefined } from '@wm/core';\nimport { DeviceFileService } from '@wm/mobile/core';\nimport { SWAGGER_CONSTANTS } from '@wm/variables';\n\nimport { ColumnInfo, EntityInfo } from './config';\nimport { escapeName } from '../utils/utils';\nimport { LocalDBManagementService } from '../services/local-db-management.service';\nimport {filter, find, forEach, isEmpty, isNil, isString, map, reduce, trim} from \"lodash-es\";\n\nexport interface FilterCriterion {\n attributeName: string;\n attributeValue: any;\n attributeType: string;\n filterCondition: string;\n}\n\nexport interface Pagination {\n offset: number;\n limit: number;\n}\n\nconst insertRecordSqlTemplate = (schema: EntityInfo) => {\n const columnNames = [],\n placeHolder = [];\n forEach(schema.columns, col => {\n columnNames.push(escapeName(col.name));\n placeHolder.push('?');\n });\n return `INSERT INTO ${escapeName(schema.name)} (${columnNames.join(',')}) VALUES (${placeHolder.join(',')})`;\n};\n\nconst replaceRecordSqlTemplate = (schema: EntityInfo) => {\n const columnNames = [],\n placeHolder = [];\n forEach(schema.columns, col => {\n columnNames.push(escapeName(col.name));\n placeHolder.push('?');\n });\n return `REPLACE INTO ${escapeName(schema.name)} (${columnNames.join(',')}) VALUES (${placeHolder.join(',')})`;\n};\n\nconst deleteRecordTemplate = (schema: EntityInfo) => {\n const primaryKeyField = find(schema.columns, 'primaryKey');\n if (primaryKeyField) {\n return `DELETE FROM ${escapeName(schema.name)} WHERE ${escapeName(primaryKeyField.name)} = ?`;\n }\n return '';\n};\n\nconst selectSqlTemplate = (schema: EntityInfo) => {\n const columns = [],\n joins = [];\n schema.columns.forEach( col => {\n let childTableName;\n columns.push(escapeName(schema.name) + '.' + escapeName(col.name) + ' as ' + col.fieldName);\n if (col.foreignRelations) {\n col.foreignRelations.forEach(foreignRelation => {\n childTableName = foreignRelation.sourceFieldName;\n forEach(foreignRelation.dataMapper, (childCol, childFiledName) => {\n columns.push(childTableName + '.' + escapeName(childCol.name) + ' as \\'' + childFiledName + '\\'');\n });\n joins.push(` LEFT JOIN ${escapeName(foreignRelation.targetTable)} ${childTableName}\n ON ${childTableName}.${escapeName(foreignRelation.targetColumn)} = ${escapeName(schema.name)}.${escapeName(col.name)}`);\n });\n }\n });\n return `SELECT ${columns.join(',')} FROM ${escapeName(schema.name)} ${joins.join(' ')}`;\n};\n\nconst countQueryTemplate = (schema: EntityInfo) => {\n const joins = [];\n schema.columns.forEach( col => {\n let childTableName;\n if (col.foreignRelations) {\n col.foreignRelations.forEach(foreignRelation => {\n childTableName = foreignRelation.sourceFieldName;\n joins.push(` LEFT JOIN ${escapeName(foreignRelation.targetTable)} ${childTableName}\n ON ${childTableName}.${escapeName(foreignRelation.targetColumn)} = ${escapeName(schema.name)}.${escapeName(col.name)}`);\n });\n }\n });\n return `SELECT count(*) as count FROM ${escapeName(schema.name)} ${joins.join(' ')}`;\n};\n\nconst generateWherClause = (store: LocalDBStore, filterCriteria: FilterCriterion[]) => {\n let conditions;\n const fieldToColumnMapping = store.fieldToColumnMapping,\n tableName = store.entitySchema.name;\n if (!isEmpty(filterCriteria) && isString(filterCriteria)) {\n return ' WHERE ' + filterCriteria;\n }\n if (filterCriteria) {\n conditions = filterCriteria.map(filterCriterion => {\n const colName = fieldToColumnMapping[filterCriterion.attributeName],\n condition = filterCriterion.filterCondition;\n let target = filterCriterion.attributeValue,\n operator = '=';\n if (filterCriterion.attributeType === 'STRING') {\n if (condition === 'STARTING_WITH') {\n target = target + '%';\n operator = 'like';\n } else if (condition === 'ENDING_WITH') {\n target = '%' + target;\n operator = 'like';\n } else if (condition === 'CONTAINING') {\n target = '%' + target + '%';\n operator = 'like';\n }\n target = `'${target}'`;\n } else if (filterCriterion.attributeType === 'BOOLEAN') {\n target = (target === true ? 1 : 0);\n }\n return `${escapeName(tableName)}.${escapeName(colName)} ${operator} ${target}`;\n });\n }\n return conditions && conditions.length > 0 ? ' WHERE ' + conditions.join(' AND ') : '';\n};\n\nconst generateOrderByClause = (store: LocalDBStore, sort: string) => {\n if (sort) {\n return ' ORDER BY ' + map(sort.split(','), field => {\n const splits = trim(field).split(' ');\n splits[0] = escapeName(store.entitySchema.name) + '.' + escapeName(store.fieldToColumnMapping[splits[0]]);\n return splits.join(' ');\n }).join(',');\n }\n return '';\n};\n\nconst geneateLimitClause = page => {\n page = page || {};\n return ' LIMIT ' + (page.limit || 100) + ' OFFSET ' + (page.offset || 0);\n};\n\nconst mapRowDataToObj = (schema: EntityInfo, dataObj: any) => {\n schema.columns.forEach(col => {\n const val = dataObj[col.fieldName];\n if (col.foreignRelations) {\n col.foreignRelations.forEach(foreignRelation => {\n let childEntity = null;\n forEach(foreignRelation.dataMapper, function (childCol, childFieldName) {\n const fieldValue = dataObj[childFieldName];\n if (isDefined(fieldValue) && fieldValue !== null && fieldValue !== '') {\n childEntity = childEntity || {};\n childEntity[childCol.fieldName] = dataObj[childFieldName];\n }\n delete dataObj[childFieldName];\n });\n dataObj[foreignRelation.sourceFieldName] = childEntity;\n });\n } else if (col.sqlType === 'boolean' && !isNil(val)) {\n dataObj[col.fieldName] = (val === 1);\n }\n });\n return dataObj;\n};\n\nconst getValue = (entity: any, col: ColumnInfo) => {\n let value = entity[col.fieldName];\n if (col.foreignRelations) {\n col.foreignRelations.some(foreignRelation => {\n if (foreignRelation.targetEntity && entity[foreignRelation.sourceFieldName]) {\n value = entity[foreignRelation.sourceFieldName][foreignRelation.targetFieldName];\n return true;\n }\n return false;\n });\n }\n if (isNil(value)) {\n return col.defaultValue;\n } else if (col.sqlType === 'boolean') {\n return (value === true ? 1 : 0);\n } else {\n return value;\n }\n};\n\nconst mapObjToRow = (store: LocalDBStore, entity: any) => {\n const row = {};\n store.entitySchema.columns.forEach(col => row[col.name] = getValue(entity, col));\n return row;\n};\n\nexport class LocalDBStore {\n\n public readonly primaryKeyField: ColumnInfo;\n public readonly primaryKeyName: string;\n public readonly fieldToColumnMapping: object = {};\n\n private insertRecordSqlTemplate: string;\n private replaceRecordSqlTemplate: string;\n private deleteRecordTemplate: string;\n private selectSqlTemplate: string;\n private countQuery: string;\n\n constructor(\n private deviceFileService: DeviceFileService,\n public readonly entitySchema: EntityInfo,\n private file: File,\n private localDbManagementService: LocalDBManagementService,\n private sqliteObject: SQLiteObject\n ) {\n this.primaryKeyField = find(this.entitySchema.columns, 'primaryKey');\n this.primaryKeyName = this.primaryKeyField ? this.primaryKeyField.fieldName : undefined;\n this.entitySchema.columns.forEach(c => {\n this.fieldToColumnMapping[c.fieldName] = c.name;\n if (c.foreignRelations) {\n c.foreignRelations.forEach( foreignRelation => {\n this.fieldToColumnMapping[foreignRelation.targetPath] = c.name;\n forEach(foreignRelation.dataMapper, (childCol, childFieldName) => {\n this.fieldToColumnMapping[childFieldName] = foreignRelation.sourceFieldName + '.' + childCol.name;\n });\n });\n }\n });\n\n this.insertRecordSqlTemplate = insertRecordSqlTemplate(this.entitySchema);\n this.replaceRecordSqlTemplate = replaceRecordSqlTemplate(this.entitySchema);\n this.deleteRecordTemplate = deleteRecordTemplate(this.entitySchema);\n this.selectSqlTemplate = selectSqlTemplate(this.entitySchema);\n this.countQuery = countQueryTemplate(this.entitySchema);\n }\n\n public add(entity: any): Promise<any> {\n if (this.primaryKeyName) {\n const idValue = entity[this.primaryKeyName];\n if (this.primaryKeyField.sqlType === 'number'\n && (!isDefined(idValue) || (isString(idValue) && isEmpty(trim(idValue))))) {\n if (this.primaryKeyField.generatorType === 'identity') {\n // updating the id with the latest id obtained from nextId.\n entity[this.primaryKeyName] = this.localDbManagementService.nextIdCount();\n } else {\n // for assigned type, get the primaryKeyValue from the relatedTableData which is inside the entity\n const primaryKeyValue = this.getValue(entity, this.primaryKeyName);\n entity[this.primaryKeyName] = primaryKeyValue;\n }\n }\n }\n const rowData = mapObjToRow(this, entity);\n const params = this.entitySchema.columns.map(f => rowData[f.name]);\n return this.sqliteObject.executeSql(this.insertRecordSqlTemplate, params)\n .then(result => result.insertId);\n }\n\n /**\n * clears all data of this store.\n * @returns {object} promise\n */\n public clear(): Promise<any> {\n return this.sqliteObject.executeSql('DELETE FROM ' + escapeName(this.entitySchema.name));\n }\n\n /**\n * creates the stores if it does not exist\n * @returns {Promise<any>}\n */\n public create(): Promise<any> {\n return this.sqliteObject.executeSql(this.createTableSql(this.entitySchema)).then(() => this);\n }\n\n /**\n * counts the number of records that satisfy the given filter criteria.\n * @param {FilterCriterion[]} filterCriteria\n * @returns {object} promise that is resolved with count\n */\n public count(filterCriteria?: FilterCriterion[]): Promise<number> {\n const sql = this.countQuery + generateWherClause(this, filterCriteria);\n return this.sqliteObject.executeSql(sql).then(result => result.rows.item(0)['count']);\n }\n\n /**\n * This function deserializes the given map object to FormData, provided that map object was\n * serialized by using serialize method of this store.\n * @param {object} map object to deserialize\n * @returns {object} promise that is resolved with the deserialized FormData.\n */\n public deserialize(map: any) {\n return this.deserializeMapToFormData(map);\n }\n\n /**\n * filters data of this store that statisfy the given filter criteria.\n * @param {FilterCriterion[]} filterCriteria\n * @param {string=} sort ex: 'filedname asc/desc'\n * @param {object=} page {'offset' : 0, \"limit\" : 20}\n * @returns {object} promise that is resolved with the filtered data.\n */\n public filter(filterCriteria?: FilterCriterion[], sort?: string, page?: Pagination): Promise<any[]> {\n let sql = this.selectSqlTemplate;\n sql += generateWherClause(this, filterCriteria);\n sql += generateOrderByClause(this, sort);\n sql += geneateLimitClause(page);\n return this.sqliteObject.executeSql(sql)\n .then(result => {\n const objArr = [],\n rowCount = result.rows.length;\n for (let i = 0; i < rowCount; i++) {\n objArr.push(mapRowDataToObj(this.entitySchema, result.rows.item(i)));\n }\n return objArr;\n });\n }\n\n // fetches all the data related to the primaryKey\n public refresh(data) {\n const primaryKeyName = this.primaryKeyName;\n const primaryKey = this.getValue(data, primaryKeyName);\n if (!primaryKey) {\n return Promise.resolve(data);\n }\n return this.get(primaryKey);\n }\n\n /**\n * deletes the record with the given primary key.\n * @param {object} primaryKey primary key of the record\n * @returns {object} promise\n */\n public delete(primaryKey: any) {\n return this.sqliteObject.executeSql(this.deleteRecordTemplate, [primaryKey]);\n }\n\n /**\n * finds the record with the given primary key.\n * @param {object} primaryKey primary key of the record\n * @returns {object} promise that is resolved with entity\n */\n public get(primaryKey: any) {\n const filterCriteria = [{\n attributeName: this.primaryKeyName,\n filterCondition: '=',\n attributeValue: primaryKey,\n attributeType: this.primaryKeyField.sqlType.toUpperCase() }];\n return this.filter(filterCriteria).then(function (obj) {\n return obj && obj.length === 1 ? obj[0] : undefined;\n });\n }\n\n /**\n * retrieve the value for the given field.\n *\n * @param entity\n * @param {string} fieldName\n * @returns {undefined | any | number}\n */\n public getValue(entity: any, fieldName: string) {\n const column = this.entitySchema.columns.find( col => col.fieldName === fieldName);\n return getValue(entity, column);\n }\n\n /**\n * saves the given entity to the store. If the record is not available, then a new record will be created.\n * @param {object} entity the entity to save\n * @returns {object} promise\n */\n public save(entity) {\n return this.saveAll([entity]);\n }\n\n /**\n * saves the given entity to the store. If the record is not available, then a new record will be created.\n * @param {object} entities the entity to save\n * @returns {object} promise\n */\n public saveAll(entities: any[]) {\n // filtering the null entities\n entities = filter(entities, null);\n const queries = map(entities, entity => {\n const rowData = mapObjToRow(this, entity);\n const params = this.entitySchema.columns.map(f => rowData[f.name]);\n return [this.replaceRecordSqlTemplate, params];\n });\n return this.sqliteObject.sqlBatch(queries);\n }\n\n /**\n * Based on this store columns, this function converts the given FormData to a map object.\n * Multipart file is stored as a local file. If form data cannot be serialized,\n * then formData is returned back.\n * @param {FormData} formData object to serialize\n * @returns {object} promise that is resolved with a map.\n */\n public serialize(formData: any) {\n return this.serializeFormDataToMap(formData);\n }\n\n /**\n * Save blob to a local file\n * @param blob\n * @returns {*}\n */\n private saveBlobToFile(blob: any) {\n const fileName = this.deviceFileService.appendToFileName(blob.name),\n uploadDir = this.deviceFileService.getUploadDirectory();\n return this.file.writeFile(uploadDir, fileName, blob).then(function () {\n return {\n 'name' : blob.name,\n 'type' : blob.type,\n 'lastModified' : blob.lastModified,\n 'lastModifiedDate' : blob.lastModifiedDate,\n 'size' : blob.size,\n 'wmLocalPath' : uploadDir + '/' + fileName\n };\n });\n }\n\n /**\n * Converts form data object to map for storing request in local database..\n */\n private serializeFormDataToMap(formData) {\n const blobColumns = filter(this.entitySchema.columns, {\n 'sqlType' : 'blob'\n }),\n promises = [];\n let map = {};\n if (formData && typeof formData.append === 'function' && formData.rowData) {\n forEach(formData.rowData, (fieldData, fieldName) => {\n if (fieldData && find(blobColumns, {'fieldName': fieldName})) {\n promises.push(this.saveBlobToFile(fieldData).then(localFile => {\n map[fieldName] = localFile;\n }));\n } else {\n map[fieldName] = fieldData;\n }\n });\n } else {\n map = formData;\n }\n return Promise.all(promises).then(() => map);\n }\n\n /**\n * Converts map object back to form data.\n */\n private deserializeMapToFormData(map) {\n const formData = new FormData(),\n blobColumns = this.entitySchema.columns.filter(c => c.sqlType === 'blob'),\n promises = [];\n forEach(blobColumns, column => {\n const value = map[column.fieldName];\n if (value && value.wmLocalPath) {\n promises.push(convertToBlob(value.wmLocalPath)\n .then(result => formData.append(column.fieldName, result.blob, value.name)));\n map[column.fieldName] = '';\n }\n });\n formData.append(SWAGGER_CONSTANTS.WM_DATA_JSON, new Blob([JSON.stringify(map)], {\n type: 'application/json'\n }));\n return Promise.all(promises).then(() => formData);\n }\n\n private createTableSql(schema) {\n // @ts-ignore\n const fieldStr = reduce(schema.columns, (result, f) => {\n let str = escapeName(f.name);\n if (f.primaryKey) {\n if (f.sqlType === 'number' && f.generatorType === 'databaseIdentity') {\n str += ' INTEGER PRIMARY KEY AUTOINCREMENT';\n } else {\n str += ' PRIMARY KEY';\n }\n }\n return result ? result + ',' + str : str;\n }, false);\n return `CREATE TABLE IF NOT EXISTS ${escapeName(schema.name)} (${fieldStr})`;\n }\n}\n","import { SQLiteObject } from '@awesome-cordova-plugins/sqlite/ngx';\n\nimport { LocalDBStore } from './local-db-store';\n\nexport class DBInfo {\n public schema = {\n name: '',\n isInternal: false,\n entities: new Map<string, EntityInfo>()\n };\n public stores = new Map<string, LocalDBStore>();\n public queries = new Map<string, NamedQueryInfo>();\n public sqliteObject: SQLiteObject;\n}\n\nexport class EntityInfo {\n public columns = new Array<ColumnInfo>();\n public pullConfig: PullConfig;\n public pushConfig: PushConfig;\n\n constructor(public name: string, public entityName?: string) {\n this.entityName = this.entityName || this.name;\n }\n}\n\nexport class ColumnInfo {\n public generatorType: string;\n public sqlType: string;\n public primaryKey = false;\n public defaultValue: any;\n public foreignRelations?: ForeignRelationInfo[];\n\n constructor(public name: string, public fieldName?: string) {\n this.fieldName = this.fieldName || this.name;\n }\n}\n\nexport class ForeignRelationInfo {\n public sourceFieldName: string;\n public targetEntity: string;\n public targetTable: string;\n public targetColumn: string;\n public targetFieldName: string;\n public targetPath: string;\n public dataMapper: Array<ColumnInfo>;\n}\n\nexport class NamedQueryInfo {\n public params: NamedQueryParamInfo[];\n public response = {\n properties: []\n };\n constructor(public name: string, public query: string) {\n\n }\n}\n\nexport class NamedQueryParamInfo {\n constructor(public name: string, public type?: string, public variableType?: string) {\n\n }\n}\n\nexport class PullConfig {\n public size: number;\n public query: string;\n public orderBy: string;\n public maxNoOfRecords: number;\n public defaultType: string;\n public pullType: PullType;\n public filter: OfflineDataFilter[];\n}\n\nexport enum PullType {\n LIVE = 'LIVE',\n BUNDLED = 'BUNDLED',\n APP_START = 'APP_START'\n}\n\nexport class OfflineDataFilter {\n public attributeName: string;\n public attributeValue: any;\n public attributeType: string;\n public filterCondition: string;\n}\n\nexport class PushConfig {\n public insertEnabled = false;\n public updateEnabled = false;\n public deleteEnabled = false;\n public readEnabled = true;\n}\n","import { Injectable } from '@angular/core';\n\nimport { AppVersion } from '@awesome-cordova-plugins/app-version/ngx';\nimport { File } from '@awesome-cordova-plugins/file/ngx';\nimport { SQLite, SQLiteObject } from '@awesome-cordova-plugins/sqlite/ngx';\n\nimport {\n DataType,\n DEFAULT_FORMATS,\n executePromiseChain,\n extractType,\n isAndroid,\n isIos,\n noop,\n toPromise,\n transformFileURI\n} from '@wm/core';\nimport { DeviceFileService, DeviceService } from '@wm/mobile/core';\nimport { SecurityService } from '@wm/security';\nimport { formatDate } from '@wm/variables';\n\nimport { LocalKeyValueService } from './local-key-value.service';\nimport { LocalDBStore } from '../models/local-db-store';\nimport { escapeName } from '../utils/utils';\nimport { ColumnInfo, DBInfo, EntityInfo, NamedQueryInfo, PullType } from '../models/config';\nimport {\n chain,\n find,\n forEach,\n isEmpty,\n isUndefined,\n map,\n now,\n parseInt,\n replace,\n toUpper,\n toString,\n values,\n isArray, assignIn\n} from \"lodash-es\";\ndeclare const moment;\ndeclare const cordova;\ndeclare const Zeep;\n\nconst NEXT_ID_COUNT = 'localDBStore.nextIdCount';\nconst META_LOCATION = 'www/metadata/app';\nconst OFFLINE_WAVEMAKER_DATABASE_SCHEMA = {\n name: 'wavemaker',\n version: 1,\n isInternal: true,\n tables: [\n {\n name: 'key_value',\n entityName: 'key-value',\n columns: [{\n fieldName: 'id',\n name: 'id',\n generatorType : 'databaseIdentity',\n sqlType : 'number',\n primaryKey: true\n }, {\n fieldName: 'key',\n name: 'key'\n }, {\n name: 'value',\n fieldName: 'value'\n }]\n },\n {\n name: 'offlineChangeLog',\n entityName: 'offlineChangeLog',\n columns: [{\n fieldName: 'id',\n name: 'id',\n generatorType: 'databaseIdentity',\n sqlType: 'number',\n primaryKey: true\n }, {\n name: 'service',\n fieldName: 'service'\n }, {\n name: 'operation',\n fieldName: 'operation'\n }, {\n name: 'params',\n fieldName: 'params'\n }, {\n name: 'timestamp',\n fieldName: 'timestamp'\n }, {\n name: 'hasError',\n fieldName: 'hasError'\n }, {\n name: 'errorMessage',\n fieldName: 'errorMessage'\n }]\n }\n ]\n};\n\nexport interface CallBack {\n onDbCreate?: (info: any) => any;\n postImport?: (importFolderPath: string, metaInfo: any) => any;\n preExport?: (folderToExportFullPath: string, metaInfo: any) => any;\n}\n\n@Injectable({providedIn: 'root'})\nexport class LocalDBManagementService {\n static readonly SERVICE_NAME = 'LocalDBManagementService';\n private callbacks: CallBack[] = [];\n private dbInstallDirectory: string;\n private dbInstallDirectoryName: string;\n private dbInstallParentDirectory: string;\n private databases: Map<string, DBInfo>;\n private _logSql = false;\n public nextId = 100000000000;\n private readonly systemProperties = {\n 'USER_ID' : {\n 'name' : 'USER_ID',\n 'value' : () => this.securityService.getLoggedInUser().then( userInfo => userInfo.userId)\n },\n 'USER_NAME' : {\n 'name' : 'USER_NAME',\n 'value' : () => this.securityService.getLoggedInUser().then( userInfo => userInfo.userName)\n },\n 'DATE_TIME' : {\n 'name' : 'DATE_TIME',\n 'value' : () => moment().format('YYYY-MM-DDThh:mm:ss')\n },\n 'DATE' : {\n 'name' : 'CURRENT_DATE',\n 'value' : () => moment().format('YYYY-MM-DD')\n },\n 'TIME' : {\n 'name' : 'TIME',\n 'value' : () => moment().format('hh:mm:ss')\n }\n };\n\n constructor(\n private appVersion: AppVersion,\n private deviceService: DeviceService,\n private deviceFileService: DeviceFileService,\n private file: File,\n private localKeyValueService: LocalKeyValueService,\n private securityService: SecurityService,\n private sqlite: SQLite\n ) {}\n\n /**\n * Closes all databases.\n *\n * @returns {object} a promise.\n */\n public close(): Promise<any> {\n return new Promise((resolve, reject) => {\n // Before closing databases, give some time for the pending transactions (if any).\n setTimeout(() => {\n // @ts-ignore\n const closePromises = map(values(this.databases), db => db.sqliteObject.close());\n Promise.all(closePromises).then(resolve, reject);\n }, 1000);\n });\n }\n\n public nextIdCount() {\n this.nextId = this.nextId + 1;\n this.localKeyValueService.put(NEXT_ID_COUNT, this.nextId);\n return this.nextId;\n }\n\n /**\n * Executes a named query.\n *\n * @param {string} dbName name of database on which the named query has to be run\n * @param {string} queryName name of the query to execute\n * @param {object} params parameters required for query.\n * @returns {object} a promise.\n */\n public executeNamedQuery(dbName: string, queryName: string, params: any) {\n let queryData, paramPromises;\n if (!this.databases[dbName] || !this.databases[dbName].queries[queryName]) {\n return Promise.reject(`Query by name ' ${queryName} ' Not Found`);\n }\n queryData = this.databases[dbName].queries[queryName];\n paramPromises = chain(queryData.params)\n .filter(p => p.variableType !== 'PROMPT')\n .forEach(p => {\n const paramValue = this.systemProperties[p.variableType].value(p.name, params);\n return toPromise(paramValue).then(v => params[p.name] = v);\n }).value();\n return Promise.all(paramPromises).then(() => {\n params = map(queryData.params, p => {\n // Sqlite will accept DateTime value as below format.\n if (typeof params[p.name] !== 'string'\n && (p.type === DataType.DATETIME || p.type === DataType.LOCALDATETIME)) {\n return formatDate(params[p.name], p.type);\n }\n // sqlite accepts the bool val as 1,0 hence convert the boolean value to number\n if (p.type === DataType.BOOLEAN) {\n return this.convertBoolToInt(params[p.name]);\n }\n return params[p.name];\n });\n return this.executeSQLQuery(dbName, queryData.query, params)\n .then(result => {\n let firstRow,\n needTransform;\n if (!isEmpty(result.rows)) {\n firstRow = result.rows[0];\n needTransform = find(queryData.response.properties, p => !firstRow.hasOwnProperty(p.fieldName));\n if (!isUndefined(needTransform)) {\n result.rows = map(result.rows, row => {\n const transformedRow = {},\n rowWithUpperKeys = {};\n // This is to make search for data as case-insensitive\n forEach(row, (v, k) => rowWithUpperKeys[k.toUpperCase()] = v);\n forEach(queryData.response.properties, p => {\n // format the value depending on the typeRef specified in properties.\n const propType = extractType(p.fieldType.typeRef);\n const formatValue = DEFAULT_FORMATS[toUpper(propType)];\n const fieldVal = row[p.name];\n if (fieldVal && typeof fieldVal !== 'string'\n && (propType === DataType.DATETIME || propType === DataType.LOCALDATETIME || propType === DataType.DATE)) {\n if (moment(fieldVal).isValid()) {\n row[p.name] = formatDate(fieldVal, propType);\n } else if (moment(fieldVal, 'HH:mm').isValid()) {\n // if the value is in HH:mm:ss format, it returns a wrong date. So append the date to the given value to get date\n row[p.name] = moment().format('YYYY-MM-DD') + 'T' + fieldVal;\n }\n }\n if (propType === DataType.BOOLEAN) {\n row[p.name] = this.convertIntToBool(fieldVal);\n }\n rowWithUpperKeys[p.nameInUpperCase] = row[p.name];\n transformedRow[p.name] = row[p.name];\n transformedRow[p.fieldName] = row[p.fieldName] || rowWithUpperKeys[p.nameInUpperCase];\n });\n return transformedRow;\n });\n }\n }\n return result;\n });\n });\n }\n\n /**\n * This function will export the databases in a zip format.\n *\n * @returns {object} a promise that is resolved when zip is created.\n */\n public exportDB(): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n const folderToExport = 'offline_temp_' + now(),\n folderToExportFullPath = cordova.file.cacheDirectory + folderToExport + '/',\n zipFileName = '_offline_data.zip',\n metaInfo = {\n app: null,\n OS: '',\n createdOn: 0\n };\n let zipDirectory;\n if (isIos()) {\n // In IOS, save zip to documents directory so that user can export the file from IOS devices using iTUNES.\n zipDirectory = cordova.file.documentsDirectory;\n } else {\n // In Android, save zip to download directory.\n zipDirectory = cordova.file.externalRootDirectory + 'Download/';\n }\n // Create a temporary folder to copy all the content to export\n this.file.createDir(cordova.file.cacheDirectory, folderToExport, false)\n .then(() => {\n // Copy databases to temporary folder for export\n return this.file.copyDir(this.dbInstallParentDirectory, this.dbInstallDirectoryName, folderToExportFullPath, 'databases')\n .then(() => {\n // Prepare meta info to identify the zip and other info\n return this.getAppInfo();\n }).then(appInfo => {\n metaInfo.app = (appInfo as any);\n if (isIos()) {\n metaInfo.OS = 'IOS';\n } else if (isAndroid()) {\n metaInfo.OS = 'ANDROID';\n }\n metaInfo.createdOn = now();\n return metaInfo;\n }).then(() => executePromiseChain(this.getCallbacksFor('preExport'), [folderToExportFullPath, metaInfo]))\n .then(() => {\n // Write meta data to META.json\n return this.file.writeFile(folderToExportFullPath, 'META.json', JSON.stringify(metaInfo));\n });\n }).then(() => {\n // Prepare name to use for the zip.\n let appName = metaInfo.app.name;\n appName = appName.replace(/\\s+/g, '_');\n return this.deviceFileService.newFileName(zipDirectory, appName + zipFileName)\n .then(fileName => {\n // Zip the temporary folder for export\n return new Promise((rs, re) => {\n Zeep.zip({\n from : folderToExportFullPath,\n to : zipDirectory + fileName\n }, () => rs(zipDirectory + fileName), re);\n });\n });\n }).then(resolve, reject)\n .catch(noop).then(() => {\n // Remove temporary folder for export\n return this.deviceFileService.removeDir(cordova.file.cacheDirectory + folderToExport);\n });\n });\n }\n\n /**\n * returns store bound to the dataModelName and entityName.\n *\n * @param dataModelName\n * @param entityName\n * @returns {*}\n */\n public getStore(dataModelName: string, entityName: string): Promise<LocalDBStore> {\n return new Promise((resolve, reject) => {\n if (this.databases[dataModelName]) {\n resolve(this.databases[dataModelName].stores[entityName]);\n }\n reject(`store with name'${entityName}' in datamodel '${dataModelName}' is not found`);\n });\n }\n\n /**\n * This function will replace the databases with the files provided in zip. If import gets failed,\n * then app reverts back to use old databases.\n *\n * @param {string} zipPath location of the zip file.\n * @param {boolean} revertIfFails If true, then a backup is created and when import fails, backup is reverted back.\n * @returns {object} a promise that is resolved when zip is created.\n */\n public importDB(zipPath: string, revertIfFails: boolean): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n const importFolder = 'offline_temp_' + now(),\n importFolderFullPath = cordova.file.cacheDirectory + importFolder + '/';\n let zipMeta;\n // Create a temporary folder to unzip the contents of the zip.\n this.file.createDir(cordova.file.cacheDirectory, importFolder, false)\n .then( () => {\n return new Promise<void>((rs, re) => {\n // Unzip to temporary location\n Zeep.unzip({\n from: zipPath,\n to: importFolderFullPath\n }, rs, re);\n });\n }).then(() => {\n /*\n * read meta data and allow import only package name of the app from which this zip is created\n * and the package name of this app are same.\n */\n return this.file.readAsText(importFolderFullPath, 'META.json')\n .then(text => {\n zipMeta = JSON.parse(text);\n return this.getAppInfo();\n }).then(appInfo => {\n if (!zipMeta.app) {\n return Promise.reject('meta information is not found in zip');\n }\n if (zipMeta.app.packageName !== appInfo.packageName) {\n return Promise.reject('database zip of app with same package name can only be imported');\n }\n });\n }).then(() => {\n let backupZip;\n return this.close()\n .then(() => {\n if (revertIfFails) {\n // create backup\n return this.exportDB()\n .then(path => backupZip = path);\n }\n }).then(() => {\n // delete existing databases\n return this.deviceFileService.removeDir(this.dbInstallDirectory);\n }).then(() => {\n // copy imported databases\n return this.file.copyDir(importFolderFullPath, 'databases', this.dbInstallParentDirectory, this.dbInstallDirectoryName);\n }).then(() => {\n // reload databases\n this.databases = null;\n return this.loadDatabases();\n }).then(() => executePromiseChain(this.getCallbacksFor('postImport'), [importFolderFullPath, zipMeta]))\n .then(() => {\n if (backupZip) {\n return this.deviceFileService.removeFile(backupZip);\n }\n }, (reason) => {\n if (backupZip) {\n return this.importDB(backupZip, false)\n .then(() => {\n this.deviceFileService.removeFile(backupZip);\n return Promise.reject(reason);\n });\n }\n return Promise.reject(reason);\n });\n }).then(resolve, reject)\n .catch(noop)\n .then(() => {\n return this.deviceFileService.removeDir(cordova.file.cacheDirectory + importFolder);\n });\n });\n }\n\n /**\n * @param {string} dataModelName Name of the data model\n * @param {string} entityName Name of the entity\n * @param {string} operation Name of the operation (READ, INSERT, UPDATE, DELETE)\n * @returns {boolean} returns true, if the given operation can be performed as per configuration.\n */\n public isOperationAllowed(dataModelName: string, entityName: string, operation: string): Promise<boolean> {\n return this.getStore(dataModelName, entityName).then( store => {\n if (!store) {\n return false;\n }\n if (operation === 'READ') {\n return store.entitySchema.pushConfig.readEnabled;\n }\n if (operation === 'INSERT') {\n return store.entitySchema.pushConfig.insertEnabled;\n }\n if (operation === 'UPDATE') {\n return store.entitySchema.pushConfig.updateEnabled;\n }\n if (operation === 'DELETE') {\n return store.entitySchema.pushConfig.deleteEnabled;\n }\n return false;\n }).catch(() => {\n return false;\n });\n }\n\n public loadDatabases(): Promise<any> {\n let newDatabasesCreated = false;\n if (this.databases) {\n return Promise.resolve(this.databases);\n } else {\n if (isIos()) {\n this.dbInstallDirectoryName = 'LocalDatabase';\n this.dbInstallParentDirectory = cordova.file.applicationStorageDirectory + 'Library/';\n } else {\n this.dbInstallDirectoryName = 'databases';\n this.dbInstallParentDirectory = cordova.file.applicationStorageDirectory;\n }\n this.dbInstallDirectory = this.dbInstallParentDirectory + this.dbInstallDirectoryName;\n\n this.databases = new Map<string, DBInfo>();\n return this.setUpDatabases()\n .then( flag => newDatabasesCreated = flag)\n .then(() => this.loadDBSchemas())\n .then(metadata => this.loadNamedQueries(metadata))\n .then(metadata => this.loadOfflineConfig(metadata))\n .then(metadata => {\n return Promise.all(map(metadata, dbMetadata => {\n return this.openDatabase(dbMetadata)\n .then(database => {\n this.databases[dbMetadata.schema.name] = database;\n });\n }));\n }).then(() => {\n return this.getStore('wavemaker', 'key-value').then( store => {\n this.localKeyValueService.init(store);\n return this.localKeyValueService.get(NEXT_ID_COUNT).then(val => {\n this.nextId = val || this.nextId;\n });\n });\n }).then(() => {\n if (newDatabasesCreated) {\n return this.normalizeData()\n .then(() => this.disableForeignKeys())\n .then(() => this.deviceService.getAppBuildTime())\n .then(dbSeedCreationTime => {\n return executePromiseChain(map(this.callbacks, 'onDbCreate'), [{\n 'databases' : this.databases,\n 'dbCreatedOn': now(),\n 'dbSeedCreatedOn' : dbSeedCreationTime\n }]);\n }).then(() => this.databases);\n } else {\n return this.databases;\n }\n });\n }\n }\n\n /**\n * using this function one can listen events such as onDbCreate, 'preExport' and 'postImport'.\n *\n * @param {object} listener an object with functions mapped to event names.\n */\n public registerCallback(listener: CallBack) {\n this.callbacks.push(listener);\n }\n\n public setLogSQl(flag: boolean) {\n this._logSql = flag;\n }\n\n /**\n * Deletes any existing databases (except wavemaker db) and copies the databases that are packaged with the app.\n *\n * @returns {*}\n */\n private cleanAndCopyDatabases(): Promise<any> {\n const dbSeedFolder = cordova.file.applicationDirectory + META_LOCATION;\n return this.file.createDir(this.dbInstallParentDirectory, this.dbInstallDirectoryName, false)\n .catch(noop)\n .then(() => this.deviceFileService.listFiles(this.dbInstallDirectory, /.+\\.db$/))\n .then(files => {\n if (files && files.length > 0) {\n return Promise.all(files.map(f => {\n if (f['name'] !== 'wavemaker.db') {\n return this.file.removeFile(this.dbInstallDirectory, f['name']);\n }\n }));\n }\n })\n .then( () => this.deviceFileService.listFiles(dbSeedFolder, /.+\\.db$/))\n .then(files => {\n if (files && files.length > 0) {\n return this.file.createDir(this.dbInstallParentDirectory, this.dbInstallDirectoryName, false)\n .catch(noop)\n .then(() => Promise.all(files.map(\n f => this.file.copyFile(dbSeedFolder, f['name'], this.dbInstallDirectory, f['name'])\n ))\n );\n }\n });\n }\n\n // Picks essential details from the given schema.\n private compactEntitySchema(schema, entity, transformedSchemas): EntityInfo {\n const reqEntity = transformedSchemas[entity['entityName']] as EntityInfo;\n reqEntity.entityName = entity['entityName'];\n reqEntity.name = entity['name'];\n reqEntity.columns = [];\n entity.columns.forEach(col => {\n let defaultValue = col.columnValue ? col.columnValue.defaultValue : '';\n const type = col.sqlType;\n if (type === 'number' && !col.primaryKey) {\n defaultValue = isEmpty(defaultValue) ? null : parseInt(defaultValue);\n } else if (type === 'boolean') {\n defaultValue = isEmpty(defaultValue) ? null : (defaultValue === 'true' ? 1 : 0);\n } else {\n defaultValue = isEmpty(defaultValue) ? null : defaultValue;\n }\n reqEntity.columns.push({\n name: col['name'],\n fieldName: col['fieldName'],\n generatorType: col['generatorType'],\n sqlType: col['sqlType'],\n primaryKey: col['primaryKey'],\n defaultValue: defaultValue\n });\n });\n\n forEach(entity.relations, r => {\n let targetEntitySchema, targetEntity, col, sourceColumn, mapping;\n if (r.cardinality === 'ManyToOne' || r.cardinality === 'OneToOne') {\n targetEntity = find(schema.tables, t => t.name === r.targetTable);\n mapping = r.mappings[0];\n if (targetEntity) {\n targetEntity = targetEntity.entityName;\n sourceColumn = mapping.sourceColumn;\n col = reqEntity.columns.find(column => column.name === sourceColumn);\n targetEntitySchema = schema.tables.find(table => table.name === r.targetTable);\n const foreignRelation = {\n sourceFieldName: r.fieldName,\n targetEntity: targetEntity,\n targetTable: r.targetTable,\n targetColumn: mapping.targetColumn,\n targetPath: '',\n dataMapper: [],\n targetFieldName: targetEntitySchema.columns.find(column => column.name === mapping.targetColumn).fieldName\n };\n foreignRelation.targetPath = foreignRelation.sourceFieldName + '.' + foreignRelation.targetFieldName;\n // @ts-ignore\n foreignRelation.dataMapper = chain(targetEntitySchema.columns)\n .keyBy(childCol => foreignRelation.sourceFieldName + '.' + childCol.fieldName)\n .mapValues(childCol => new ColumnInfo(childCol.name, childCol.fieldName)).value();\n col.foreignRelations = col.foreignRelations || [];\n col.foreignRelations.push(foreignRelation);\n }\n }\n });\n return reqEntity;\n }\n\n // Loads necessary details of queries\n private compactQueries(queriesByDB): Map<string, NamedQueryInfo> {\n const queries = new Map<string, NamedQueryInfo>();\n\n forEach(queriesByDB.queries, queryData => {\n let query, params;\n if (queryData.nativeSql && queryData.type === 'SELECT') {\n query = isEmpty(queryData.offlineQueryString) ? queryData.queryString : queryData.offlineQueryString;\n params = map(this.extractQueryParams(query), p => {\n const paramObj = find(queryData.parameters, {'name': p});\n return {\n name: paramObj.name,\n type: paramObj.type,\n variableType: paramObj.variableType\n };\n });\n params.forEach(p => query = replace(query, ':' + p.name, '?'));\n queries[queryData.name] = {\n name: queryData.name,\n query: query,\n params: params,\n response: {\n properties: map(queryData.response.properties, p => {\n p.nameInUpperCase = p.name.toUpperCase();\n return p;\n })\n }\n };\n }\n });\n return queries;\n }\n\n // Loads necessary details of remote schema\n private compactSchema(schema): DBInfo {\n const dbInfo = new DBInfo();\n const transformedSchemas = new Map<string, EntityInfo>();\n schema.tables.forEach(entitySchema => {\n transformedSchemas[entitySchema.entityName] = {};\n });\n schema.tables.forEach(entitySchema => {\n this.compactEntitySchema(schema, entitySchema, transformedSchemas);\n });\n dbInfo.schema.name = schema.name;\n dbInfo.schema.isInternal = schema.isInternal;\n dbInfo.schema.entities = transformedSchemas;\n return dbInfo;\n }\n\n private convertBoolToInt(bool: boolean) {\n return toString(bool) === 'true' ? 1 : 0;\n }\n\n private convertIntToBool(int: number) {\n return int ? true : false;\n }\n\n /**\n * Turns off foreign keys\n * @returns {*}\n */\n private disableForeignKeys() {\n // @ts-ignore\n return Promise.all(map(this.databases, db => this.executeSQLQuery(db.schema.name, 'PRAGMA foreign_keys = OFF')));\n }\n\n /**\n * Executes SQL query;\n *\n * @param dbName\n * @param sql\n * @param params\n * @returns {*}\n */\n public executeSQLQuery(dbName, sql, params?: any[], logOutput?: boolean) {\n const db = this.databases[dbName];\n if (db) {\n return db.sqliteObject.executeSql(sql, params, logOutput)\n .then(result => {\n const data = [],\n rows = result.rows;\n for (let i = 0; i < rows.length; i++) {\n data.push(rows.item(i));\n }\n return {\n 'rowsAffected' : result.rowsAffected,\n 'rows' : data\n };\n });\n }\n return Promise.reject(`No Database with name ${dbName} found`);\n }\n\n // get the params of the query or procedure.\n private extractQueryParams(query) {\n let params, aliasParams;\n aliasParams = query.match(/[^\"'\\w\\\\]:\\s*\\w+\\s*/g) || [];\n if (aliasParams.length) {\n params = aliasParams.map(x => (/[=|\\W]/g.test(x)) ? x.replace(/\\W/g, '').trim() : x.trim());\n } else {\n params = null;\n }\n return params;\n }\n\n /**\n * Returns a promise that is resolved with application info such as packageName, appName, versionNumber, versionCode.\n * @returns {*}\n */\n private getAppInfo() {\n const appInfo = {\n name: '',\n packageName: '',\n versionNumber: '',\n versionCode: null\n };\n return this.appVersion.getPackageName()\n .then(packageName => {\n appInfo.packageName = packageName;\n return this.appVersion.getAppName();\n }).then(appName => {\n appInfo.name = appName;\n return this.appVersion.getVersionNumber();\n }).then(versionNumber => {\n appInfo.versionNumber = versionNumber;\n return this.appVersion.getVersionCode();\n }).then(versionCode => {\n appInfo.versionCode = (versionCode as any);\n return appInfo;\n });\n }\n\n private getCallbacksFor(event: string): any[] {\n return this.callbacks.map(c => {\n if (c[event]) {\n return c[event].bind(c);\n }\n return null;\n });\n }\n\n /**\n * Searches for the files with given regex in 'www/metadata/app'and returns an array that contains the JSON\n * content present in each file.\n *\n * @param {string} fileNameRegex regex pattern to search for files.\n * @returns {*} A promise that is resolved with an array\n */\n private getMetaInfo(fileNameRegex: RegExp) {\n const folder = cordova.file.applicationDirectory + META_LOCATION + '/';\n return this.deviceFileService.listFiles(folder, fileNameRegex)\n .then(files => Promise.all(map(files, f => {\n return new Promise((resolve, reject) => {\n // Cordova File reader has buffer issues with large files.\n // so, using ajax to retrieve local json\n $.getJSON(transformFileURI(folder) + f['name'], data => resolve(data));\n });\n }))\n );\n }\n\n /**\n * Returns true, if the given entity's data is bundled along with application installer.\n * @param dataModelName name of the data model\n * @param entityName name of the entity\n * @returns {Promise<any>}\n */\n public isBundled(dataModelName, entityName): Promise<any> {\n return this.getStore(dataModelName, entityName).then(store => {\n return store.entitySchema.pullConfig.pullType === PullType.BUNDLED;\n });\n }\n\n /**\n * Loads local database schemas from *_data_model.json.\n *\n * @returns {*} A promise that is resolved with metadata.\n */\n private loadDBSchemas(): Promise<Map<string, DBInfo>> {\n return this.getMetaInfo(/.+_dataModel\\.json$/)\n .then( (schemas: any) => {\n const metadata = new Map<string, DBInfo>();\n schemas = isArray(schemas) ? schemas : [schemas];\n schemas.push(OFFLINE_WAVEMAKER_DATABASE_SCHEMA);\n schemas.map(s => this.compactSchema(s))\n .forEach(s => {\n metadata[s.schema.name] = s;\n });\n return metadata;\n });\n }\n\n /**\n * Load named queries from *_query.json.\n *\n * @param {*} metadata\n * @returns {*} A promise that is resolved with metadata\n */\n private loadNamedQueries(metadata) {\n return this.getMetaInfo(/.+_query\\.json$/)\n .then((queriesByDBs: any) => {\n queriesByDBs = isArray(queriesByDBs) ? queriesByDBs : [queriesByDBs];\n queriesByDBs.map(e => metadata[e.name].queries = this.compactQueries(e));\n return metadata;\n });\n }\n\n /**\n * Load offline configuration from *_offline.json.\n *\n * @param {*} metadata\n * @returns {*} A promise that is resolved with metadata\n */\n private loadOfflineConfig(metadata) {\n return this.getMetaInfo(/.+_offline\\.json$/)\n .then(configs => {\n forEach(configs, config => {\n // @ts-ignore\n forEach(config.entities, entityConfig => {\n // @ts-ignore\n const entitySchema = find(metadata[config.name].schema.entities, schema => schema.name === entityConfig.name);\n assignIn(entitySchema, entityConfig);\n });\n });\n return metadata;\n });\n }\n\n private logSql(sqliteObject: SQLiteObject) {\n const logger = console,\n originalExecuteSql = sqliteObject.executeSql;\n sqliteObject.executeSql = (sql, params, logOutput?: boolean) => {\n const startTime = now();\n return originalExecuteSql.call(sqliteObject, sql, params).then(result => {\n if (logOutput || this._logSql) {\n const objArr = [],\n rowCount = result.rows.length;\n for (let i = 0; i < rowCount; i++) {\n objArr.push(result.rows.item(i));\n }\n logger.debug('SQL \"%s\" with params %O took [%d ms]. And the result is %O', sql, params, now() - startTime, objArr);\n }\n return result;\n }, error => {\n logger.error('SQL \"%s\" with params %O failed with error message %s', sql, params, error.message);\n return Promise.reject(error);\n });\n };\n }\n\n /**\n * SQLite does not support boolean data. Instead of using boolean values, data will be changed to 0 or 1.\n * If the value is 'true', then 1 is set as value. If value is not 1 nor null, then column value is set as 0.\n * @param dbName\n * @param tableName\n * @param colName\n * @returns {*}\n */\n private normalizeBooleanData(dbName, tableName, colName) {\n const trueTo1Query = `update ${escapeName(tableName)} set ${escapeName(colName)} = 1 where ${escapeName(colName)} = 'true'`,\n exceptNullAnd1to0Query = `update ${escapeName(tableName)} set ${escapeName(colName)} = 0\n where ${escapeName(colName)} is not null and ${escapeName(colName)} != 1`;\n return this.executeSQLQuery(dbName, trueTo1Query)\n .then(() => this.executeSQLQuery(dbName, exceptNullAnd1to0Query));\n }\n\n /**\n * Converts data to support SQLite.\n * @returns {*}\n */\n private normalizeData() {\n return Promise.all(map(this.databases, database => {\n // @ts-ignore\n return Promise.all(map(database.schema.entities, entitySchema => {\n return Promise.all(map(entitySchema.columns, column => {\n if (column.sqlType === 'boolean') {\n // @ts-ignore\n return this.normalizeBooleanData(database.schema.name, entitySchema.name, column.name);\n }\n }));\n }));\n }));\n }\n\n private openDatabase(database: DBInfo) {\n return this.sqlite.create({\n name: database.schema.name + '.db',\n location: 'default'\n }).then(sqliteObject => {\n database.sqliteObject = sqliteObject;\n this.logSql(sqliteObject);\n const storePromises = map(database.schema.entities, entitySchema => {\n // @ts-ignore\n const store = new LocalDBStore(this.deviceFileService, entitySchema,\n this.file,\n this,\n sqliteObject\n );\n return store.create();\n });\n return Promise.all(storePromises).then(stores => {\n forEach(stores, store => {\n database.stores[store.entitySchema.entityName] = store;\n });\n return database;\n });\n });\n }\n\n /**\n * When app is opened for first time after a fresh install or update, then old databases are removed and\n * new databases are created using bundled databases.\n *\n * @returns {*} a promise that is resolved with true, if the databases are newly created or resolved with false\n * if existing databases are being used.\n */\n private setUpDatabases(): Promise<boolean> {\n return this.deviceService.getAppBuildTime()\n .then((buildTime) => {\n const dbInfo = this.deviceService.getEntry('database') || {};\n if (!dbInfo.lastBuildTime || dbInfo.lastBuildTime !== buildTime) {\n return this.cleanAndCopyDatabases()\n .then(() => {\n dbInfo.lastBuildTime = buildTime;\n return this.deviceService.storeEntry('database', dbInfo);\n }).then(() => true);\n }\n return false;\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observer } from 'rxjs';\n\nimport {executePromiseChain, getAbortableDefer, noop} from '@wm/core';\nimport { NetworkService } from '@wm/mobile/core';\n\nimport { LocalDBManagementService } from './local-db-management.service';\nimport { LocalKeyValueService } from './local-key-value.service';\nimport { LocalDBStore } from '../models/local-db-store';\nimport {isNull, isString, isUndefined, map, reverse} from \"lodash-es\";\n\nexport interface Change {\n id?: number;\n errorMessage?: string;\n hasError: number;\n operation: string;\n params: any;\n service: string;\n}\n\nexport interface FlushContext {\n clear: () => Promise<any>;\n get: (key: string) => any;\n save: () => Promise<any>;\n}\n\nexport interface Worker {\n onAddCall?: (change: Change) => (Promise<any> | void);\n preFlush?: (context: FlushContext) => (Promise<any> | void);\n postFlush?: (pushInfo: PushInfo, context: FlushContext) => (Promise<any> | void);\n preCall?: (change: Change) => (Promise<any> | void);\n postCallError?: (change: Change, error: any) => (Promise<any> | void);\n postCallSuccess?: (change: Change, response: any) => (Promise<any> | void);\n transformParamsToMap?: (change: Change) => (Promise<any> | void);\n transformParamsFromMap?: (change: Change) => (Promise<any> | void);\n}\n\nexport interface PullInfo {\n databases: Array<any>;\n totalRecordsToPull: number;\n totalPulledRecordCount: number;\n startTime: Date;\n endTime: Date;\n}\n\nexport interface PushInfo {\n completedTaskCount: number;\n endTime: Date;\n failedTaskCount: number;\n inProgress: boolean;\n startTime: Date;\n successfulTaskCount: number;\n totalTaskCount: number;\n}\n\nexport abstract class PushService {\n public abstract push(change: Change): Promise<any>;\n}\n\nexport const CONTEXT_KEY = 'changeLogService.flushContext';\nexport const LAST_PUSH_INFO_KEY = 'changeLogService.lastPushInfo';\n\n@Injectable({providedIn: 'root'})\nexport class ChangeLogService {\n static readonly SERVICE_NAME = 'ChangeLogService';\n\n private workers: Worker[] = [];\n\n private flushContext: FlushContext;\n\n private currentPushInfo: PushInfo;\n\n private deferredFlush;\n\n constructor(private localDBManagementService: LocalDBManagementService,\n private localKeyValueService: LocalKeyValueService,\n private pushService: PushService,\n private networkService: NetworkService) {\n this.currentPushInfo = {} as PushInfo;\n this.addWorker(new FlushTracker(this, this.localKeyValueService, this.currentPushInfo));\n }\n\n\n /**\n * adds a service call to the log. Call will be invoked in next flush.\n *\n * @Param {string} name of service (This should be available through $injector)\n * @Param {string} name of method to invoke.\n * @Param {object} params\n */\n public add(service: string, operation: string, params: any): Promise<void> {\n const change: Change = {\n service: service,\n operation: operation,\n params: params,\n hasError: 0\n };\n return executePromiseChain(this.getWorkers('transformParamsToMap'), [change])\n .then(() => executePromiseChain(this.getWorkers('onAddCall'), [change]))\n .then(() => {\n change.params = JSON.stringify(change.params);\n return this.getStore().then(store => store.add(change)).then(noop);\n });\n }\n\n public addWorker(worker: Worker) {\n this.workers.push(worker);\n }\n\n /**\n * Clears the current log.\n */\n public clearLog() {\n return this.getStore().then( s => s.clear());\n }\n\n /**\n * Flush the current log. If a flush is already running, then the promise of that flush is returned back.\n */\n public flush(progressObserver: Observer<PushInfo>): Promise<PushInfo> {\n let flushPromise;\n if (!this.deferredFlush) {\n this.deferredFlush = getAbortableDefer();\n this.createContext().then(context => {\n this.flushContext = context;\n return executePromiseChain(this.getWorkers('preFlush'), [this.flushContext]);\n })\n .then(() => {\n flushPromise = this._flush(progressObserver);\n this.deferredFlush.onAbort = () => flushPromise.abort();\n return flushPromise;\n })\n .catch(noop)\n .then(() => {\n Promise.resolve().then(() => {\n if (this.currentPushInfo.totalTaskCount === this.currentPushInfo.completedTaskCount) {\n return this.flushContext.clear().then(() => this.flushContext = null);\n }\n }).then(() => {\n progressObserver.complete();\n if (this.currentPushInfo.failedTaskCount > 0) {\n this.deferredFlush.reject(this.currentPushInfo);\n } else {\n this.deferredFlush.resolve(this.currentPushInfo);\n }\n this.deferredFlush = null;\n }).then(() => {\n return executePromiseChain(this.getWorkers('postFlush'), [this.currentPushInfo, this.flushContext]);\n });\n });\n }\n return this.deferredFlush.promise;\n }\n\n /**\n * Returns the complete change list\n */\n public getChanges() {\n return this.getStore().then( s => s.filter(undefined, 'id', {\n offset: 0,\n limit: 500\n })).then(changes => {\n changes.forEach(change => {\n change.params = JSON.parse(change.params);\n });\n return changes;\n });\n }\n\n\n /**\n * @returns {array} an array of changes that failed with error.\n */\n public getErrors(): Promise<Change[]> {\n return this.getStore().then( s => s.filter([{\n attributeName: 'hasError',\n attributeValue: 1,\n attributeType: 'NUMBER',\n filterCondition: 'EQUALS'\n }]));\n }\n\n\n public getLastPushInfo(): Promise<PushInfo> {\n return this.localKeyValueService.get(LAST_PUSH_INFO_KEY)\n .then(info => {\n if (isString(info.startTime)) {\n info.startTime = new Date(info.startTime);\n }\n if (isString(info.endTime)) {\n info.endTime = new Date(info.endTime);\n }\n return info;\n });\n }\n /**\n * @returns {number} number of changes that are pending to push.\n */\n public getLogLength(): Promise<number> {\n return this.getStore().then( s => s.count([{\n attributeName: 'hasError',\n attributeValue: 0,\n attributeType: 'NUMBER',\n filterCondition: 'EQUALS'\n }]));\n }\n\n /*\n * Retrieves the entity store to use by ChangeLogService.\n */\n public getStore(): Promise<LocalDBStore> {\n return this.localDBManagementService.getStore('wavemaker', 'offlineChangeLog');\n }\n\n /**\n * Returns true, if a flush process is in progress. Otherwise, returns false.\n *\n * @returns {boolean} returns true, if a flush process is in progress. Otherwise, returns false.\n */\n public isFlushInProgress(): boolean {\n return !(isUndefined(this.deferredFlush) || isNull(this.deferredFlush));\n }\n\n /**\n * Stops the ongoing flush process.\n *\n * @returns {object} a promise that is resolved when the flush process is stopped.\n */\n public stop(): Promise<void> {\n return new Promise( resolve => {\n if (this.deferredFlush) {\n this.deferredFlush.promise.catch().then(resolve);\n this.deferredFlush.promise.abort();\n } else {\n resolve();\n }\n });\n }\n\n private createContext() {\n return this.localKeyValueService.get(CONTEXT_KEY)\n .then(context => {\n context = context || {};\n return {\n 'clear' : () => {\n context = {};\n return this.localKeyValueService.remove(CONTEXT_KEY);\n },\n 'get' : key => {\n let value = context[key];\n if (!value) {\n value = {};\n context[key] = value;\n }\n return value;\n },\n 'save' : () => this.localKeyValueService.put(CONTEXT_KEY, context)\n };\n });\n }\n\n // Flushes the complete log one after another.\n private _flush(progressObserver: Observer<PushInfo>, defer?: any) {\n defer = defer || getAbortableDefer();\n if (defer.isAborted) {\n return Promise.resolve();\n }\n this.getNextChange()\n .then(change => {\n if (change) {\n change.params = JSON.parse(change.params);\n return this.flushChange(change);\n }\n })\n .then(change => {\n progressObserver.next(this.currentPushInfo);\n if (change) {\n return this.getStore()\n .then(s => s.delete(change.id))\n .then(() => this._flush(progressObserver, defer));\n } else {\n defer.resolve();\n }\n }, change => {\n if (this.networkService.isConnected()) {\n change.hasError = 1;\n change.params = JSON.stringify(change.params);\n this.getStore()\n .then(s => s.save(change))\n .then(() => this._flush(progressObserver, defer));\n } else {\n let connectPromise = this.networkService.onConnect();\n defer.promise.catch(function () {\n if (connectPromise) {\n connectPromise.abort();\n }\n });\n connectPromise.then(() => {\n this._flush(progressObserver, defer);\n connectPromise = null;\n });\n }\n });\n return defer.promise;\n }\n\n private flushChange(change: Change): Promise<Change> {\n const self = this;\n return executePromiseChain(this.getWorkers('preCall'), [change])\n .then(() => change.hasError ? Promise.reject(change.errorMessage) : '')\n .then(() => executePromiseChain(this.getWorkers('transformParamsFromMap'), [change]))\n .then(() => this.pushService.push(change))\n .then(function() {\n return executePromiseChain(reverse(self.getWorkers('postCallSuccess')), [change, arguments])\n .then(() => change);\n }).catch(function() {\n if (self.networkService.isConnected()) {\n return executePromiseChain(reverse(self.getWorkers('postCallError')), [change, arguments])\n .catch(noop).then(() => Promise.reject(change));\n }\n return Promise.reject(change);\n });\n }\n\n\n\n // Flushes the first registered change.\n private getNextChange(): Promise<Change> {\n const filterCriteria = [{\n attributeName: 'hasError',\n attributeValue: 0,\n attributeType: 'NUMBER',\n filterCondition: 'EQUALS'\n }];\n return this.getStore().then(s => s.filter(filterCriteria, 'id', {\n offset: 0,\n limit: 1\n })).then((changes: Array<Change>) => {\n return changes && changes[0];\n });\n }\n\n private getWorkers(type) {\n return map(this.workers, w => w[type] && w[type].bind(w));\n }\n}\n\nclass FlushTracker {\n\n private flushContext: FlushContext;\n private logger: any;\n\n constructor(private changeLogService: ChangeLogService,\n private localKeyValueService: LocalKeyValueService,\n private pushInfo: PushInfo) {\n this.logger = window.console;\n }\n\n public onAddCall(change: Change) {\n this.logger.debug('Added the following call %o to log.', change);\n }\n\n public preFlush(flushContext: FlushContext) {\n this.pushInfo.totalTaskCount = 0;\n this.pushInfo.successfulTaskCount = 0;\n this.pushInfo.failedTaskCount = 0;\n this.pushInfo.completedTaskCount = 0;\n this.pushInfo.inProgress = true;\n this.pushInfo.startTime = new Date();\n this.flushContext = flushContext;\n this.logger.debug('Starting flush');\n return this.changeLogService.getStore().then(store => {\n return store.count([{\n attributeName: 'hasError',\n attributeValue: 0,\n attributeType: 'NUMBER',\n filterCondition: 'EQUALS'\n }]);\n }).then(count => this.pushInfo.totalTaskCount = count);\n }\n\n public postFlush(stats: PushInfo , flushContext: FlushContext) {\n this.logger.debug('flush completed. {Success : %i , Error : %i , completed : %i, total : %i }.',\n this.pushInfo.successfulTaskCount, this.pushInfo.failedTaskCount, this.pushInfo.completedTaskCount, this.pushInfo.totalTaskCount);\n this.pushInfo.inProgress = false;\n this.pushInfo.endTime = new Date();\n this.localKeyValueService.put(LAST_PUSH_INFO_KEY, this.pushInfo);\n this.flushContext = null;\n }\n\n public preCall(change: Change) {\n this.logger.debug('%i. Invoking call %o', (1 + this.pushInfo.completedTaskCount), change);\n }\n\n public postCallError(change: Change, response: any) {\n this.pushInfo.completedTaskCount++;\n this.pushInfo.failedTaskCount++;\n this.logger.error('call failed with the response %o.', response);\n return this.flushContext.save();\n }\n\n public postCallSuccess(change: Change, response: any) {\n this.pushInfo.completedTaskCount++;\n this.pushInfo.successfulTaskCount++;\n this.logger.debug('call returned the following response %o.', response);\n return this.flushContext.save();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { LocalDBManagementService } from './local-db-management.service';\nimport { LocalDBStore } from '../models/local-db-store';\nimport {forEach, get, mapKeys} from \"lodash-es\";\n\n\n@Injectable({providedIn: 'root'})\nexport class LocalDbService {\n static readonly SERVICE_NAME = 'LocalDbService';\n private searchTableData;\n private searchTableDataWithQuery;\n private getDistinctDataByFields;\n\n constructor(private localDBManagementService: LocalDBManagementService) {\n this.searchTableData = this.readTableData.bind(this);\n this.searchTableDataWithQuery = this.readTableData.bind(this);\n this.getDistinctDataByFields = this.readTableData.bind(this);\n }\n\n public getStore(params: any): Promise<LocalDBStore> {\n return this.localDBManagementService.getStore(params.dataModelName, params.entityName);\n }\n\n /**\n * Method to insert data into the specified table. This modification will be added to offline change log.\n *\n * @param {object} params\n * Object containing name of the project & table data to be inserted.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public insertTableData(params: any, successCallback?: any, failureCallback?: any, options = {}) {\n this.getStore(params).then(store => {\n const isPKAutoIncremented = (store.primaryKeyField && store.primaryKeyField.generatorType === 'identity');\n if (get(options, 'resetPrimaryKey') !== false && isPKAutoIncremented && params.data[store.primaryKeyName]) {\n delete params.data[store.primaryKeyName];\n }\n return store.add(params.data).then(() => {\n store.refresh(params.data).then(successCallback);\n });\n }).catch(failureCallback);\n }\n\n /**\n * Method to insert multi part data into the specified table. This modification will be added to offline change log.\n *\n * @param {object} params\n * Object containing name of the project & table data to be inserted.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public insertMultiPartTableData(params: any, successCallback?: any, failureCallback?: any, options = {}) {\n this.getStore(params).then(store => {\n store.serialize(params.data).then(data => {\n params.data = data;\n this.insertTableData(params, successCallback, failureCallback, options);\n });\n }).catch(failureCallback);\n }\n\n /**\n * Method to update data in the specified table. This modification will be added to offline change log.\n *\n * @param {object} params\n * Object containing name of the project & table data to be updated.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public updateTableData(params: any, successCallback?: any, failureCallback?: any) {\n this.getStore(params).then(store => {\n return store.save(params.data)\n .then(() => {\n store.refresh(params.data).then(successCallback);\n });\n }).catch(failureCallback);\n }\n\n /**\n * Method to update multi part data in the specified table. This modification will be added to offline change log.\n *\n * @param {object} params\n * Object containing name of the project & table data to be updated.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public updateMultiPartTableData(params: any, successCallback?: any, failureCallback?: any) {\n const data = (params.data && params.data.rowData) || params.data;\n this.getStore(params).then(store => {\n return store.save(data);\n }).then(() => {\n if (successCallback) {\n successCallback(data);\n }\n }).catch(failureCallback);\n }\n\n /**\n * Method to delete data in the specified table. This modification will be added to offline change log.\n *\n * @param {object} params\n * Object containing name of the project & table data to be inserted.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public deleteTableData(params: any, successCallback?: any, failureCallback?: any) {\n this.getStore(params).then(store => {\n const pkField = store.primaryKeyField,\n id = params[pkField.fieldName] || params[pkField.name] || (params.data && params.data[pkField.fieldName]) || params.id;\n store.delete(id).then(successCallback);\n }).catch(failureCallback);\n }\n\n /**\n * Method to read data from a specified table.\n *\n * @param {object} params\n * Object containing name of the project & table data to be inserted.\n * @param {function=} successCallback\n * Callback function to be triggered on success.\n * @param {function=} failureCallback\n * Callback function to be triggered on failure.\n */\n public readTableData(params: any, successCallback?: any, failureCallback?: any) {\n this.getStore(params).then(store => {\n let filter = params.filter((filterGroup, filterFields) => {\n this.convertFieldNameToColumnName(store, filterGroup, filterFields);\n }, true);\n // convert wm_bool function with boolean value to 0/1\n filter = filter.replace(/wm_bool\\('true'\\)/g, 1).replace(/wm_bool\\('false'\\)/g, 0);\n return store.count(filter).then(totalElements => {\n const sort = params.sort.split('=')[1];\n return store.filter(filter, sort, {\n offset: (params.page - 1) * params.size,\n limit: params.size\n }).then(data => {\n const totalPages = Math.ceil(totalElements / params.size);\n successCallback({\n 'content' : data,\n 'first' : (params.page === 1),\n 'last' : (params.page === totalPages),\n 'number' : (params.page - 1),\n 'numberOfElements': data.length,\n 'size' : params.size,\n 'sort' : {\n 'sorted' : !!sort,\n 'unsorted' : !sort\n },\n 'totalElements' : totalElements,\n 'totalPages' : totalPages\n });\n });\n });\n }).catch(failureCallback);\n }\n\n private escapeName(name: string): string {\n if (name) {\n name = name.replace(/\"/g, '\"\"');\n return '\"' + name.replace(/\\./g, '\".\"') + '\"';\n }\n return name;\n }\n\n // returns the columnName appending with the schema name.\n private getColumnName(store, fieldName) {\n if (store.fieldToColumnMapping[fieldName]) {\n const columnName = this.escapeName(store.fieldToColumnMapping[fieldName]);\n if (columnName.indexOf('.') < 0) {\n return this.escapeName(store.entitySchema.name) + '.' + columnName;\n }\n return columnName;\n }\n return fieldName;\n }\n\n private convertFieldNameToColumnName(store: LocalDBStore, filterGroup: any, options?: any) {\n forEach(filterGroup.rules, rule => {\n if (rule.rules) {\n this.convertFieldNameToColumnName(store, rule);\n } else {\n rule.target = this.getColumnName(store, rule.target);\n }\n });\n // handling the scenario where variable options can have filterField. For example: search filter query\n if (options && options.filterFields) {\n options.filterFields = mapKeys(options.filterFields, (v, k) => {\n return this.getColumnName(store, k);\n });\n }\n }\n}\n","import { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { noop } from '@wm/core';\nimport { DeviceFileService } from '@wm/mobile/core';\n\nimport { Change, ChangeLogService, FlushContext, Worker } from '../change-log.service';\nimport { CallBack, LocalDBManagementService } from '../local-db-management.service';\nimport {assignIn, isEmpty, isEqual, isObject, isString, mapValues, replace} from \"lodash-es\";\n\nconst STORE_KEY = 'offlineFileUpload';\n\nexport class FileHandler implements Worker {\n\n private fileStore;\n private logger = window.console;\n\n public preFlush(context: FlushContext) {\n this.fileStore = context.get(STORE_KEY);\n }\n\n /**\n * Replaces all local paths with the remote path using mappings created during 'uploadToServer'.\n */\n public preCall(change: Change) {\n if (change.service === 'DatabaseService') {\n change.params.data = mapValues(change.params.data, v => {\n const remoteUrl = this.fileStore[v];\n if (remoteUrl) {\n this.logger.debug('swapped file path from %s -> %s', v, remoteUrl);\n return remoteUrl;\n }\n return v;\n });\n }\n }\n\n public postCallSuccess(change: Change, response: any) {\n if (change.service === 'OfflineFileUploadService'\n && change.operation === 'uploadToServer') {\n const remoteFile = JSON.parse(response[0].text)[0];\n /*\n * A mapping will be created between local path and remote path.\n * This will be used to resolve local paths in entities.\n */\n this.fileStore[change.params.file] = remoteFile.path;\n this.fileStore[change.params.file + '?inline'] = remoteFile.inlinePath;\n }\n }\n\n}\n\nexport class UploadedFilesImportAndExportService implements CallBack {\n private uploadDir;\n\n constructor(\n private changeLogService: ChangeLogService,\n private deviceFileService: DeviceFileService,\n private localDBManagementService: LocalDBManagementService,\n private file: File\n ) {\n\n }\n\n public preExport(folderToExport: string, meta: any): Promise<any> {\n // copy offline uploads\n const uploadFullPath = this.deviceFileService.getUploadDirectory(),\n lastIndexOfSep = uploadFullPath.lastIndexOf('/'),\n uploadParentDir = uploadFullPath.substring(0, lastIndexOfSep + 1),\n uploadDirName = uploadFullPath.substring(lastIndexOfSep + 1);\n meta.uploadDir = uploadFullPath;\n return this.file.copyDir(uploadParentDir, uploadDirName, folderToExport, 'uploads');\n }\n\n public postImport(importedFolder: string, meta: any): Promise<any> {\n const uploadFullPath = this.deviceFileService.getUploadDirectory(),\n lastIndexOfSep = uploadFullPath.lastIndexOf('/'),\n uploadParentDir = uploadFullPath.substring(0, lastIndexOfSep + 1),\n uploadDirName = uploadFullPath.substring(lastIndexOfSep + 1);\n this.uploadDir = uploadFullPath;\n return this.file.checkDir(importedFolder, 'uploads')\n .then(() => {\n return this.deviceFileService.removeDir(uploadFullPath)\n .then(() => this.file.copyDir(importedFolder, 'uploads', uploadParentDir, uploadDirName))\n .then(() => this.updateChanges(meta));\n }, noop);\n }\n\n /**\n * returns back the changes that were logged.\n * @param page page number\n * @param size size of page\n * @returns {*}\n */\n private getChanges(page: number, size: number): Promise<Change[]> {\n return this.changeLogService.getStore().then(strore => {\n return (strore.filter([], 'id', {\n offset: (page - 1) * size,\n limit: size\n })) as Promise<Change[]>;\n });\n }\n\n /**\n * If this is a database change, then it will replace old upload directory with the current upload directory\n * and its corresponding owner object, if it has primary key.\n *\n * @param change\n * @param oldUploadDir\n * @param uploadDir\n * @returns {*}\n */\n private updateDBChange(change: Change, oldUploadDir: string, uploadDir: string) {\n const modifiedProperties = {},\n entityName = change.params.entityName,\n dataModelName = change.params.dataModelName;\n change.params.data = mapValues(change.params.data, function (v, k) {\n let mv = v, isModified = false;\n if (isString(v)) {\n mv = replace(v, oldUploadDir, uploadDir);\n isModified = !isEqual(mv, v);\n } else { // @ts-ignore\n if (isObject(v) && v.wmLocalPath) {\n // insertMultiPartData and updateMultiPartData\n // @ts-ignore\n mv = replace(v.wmLocalPath, oldUploadDir, uploadDir);\n // @ts-ignore\n isModified = !isEqual(mv, v.wmLocalPath);\n }\n }\n if (isModified) {\n modifiedProperties[k] = mv;\n }\n return mv;\n });\n if (!isEmpty(modifiedProperties)) {\n this.localDBManagementService.getStore(dataModelName, entityName)\n .then(store => {\n // If there is a primary for the entity, then update actual row with the modifications\n if (store.primaryKeyField && store.primaryKeyField.generatorType === 'identity') {\n const primaryKeyName = store.primaryKeyName;\n const primaryKey = change.params.data[primaryKeyName];\n return store.get(primaryKey)\n .then(obj => store.save(assignIn(obj, modifiedProperties)));\n }\n }).then(() => {\n change.params = JSON.stringify(change.params);\n return this.changeLogService.getStore().then( store => store.save(change));\n });\n }\n }\n\n /**\n * This function check this change to update old upload directory path.\n *\n * @param change\n * @param metaInfo\n * @returns {*}\n */\n private updateChange(change: Change, metaInfo: any) {\n change.params = JSON.parse(change.params);\n if (change.service === 'OfflineFileUploadService'\n && change.operation === 'uploadToServer') {\n change.params.file = replace(change.params.file, metaInfo.uploadDir, this.uploadDir);\n change.params = JSON.stringify(change.params);\n return this.changeLogService.getStore().then( store => store.save(change));\n }\n if (change.service === 'DatabaseService') {\n return this.updateDBChange(change, metaInfo.uploadDir, this.uploadDir);\n }\n }\n\n /**\n * This function will visit all the changes and modify them, if necessary.\n * @param metaInfo\n * @param page\n * @returns {*}\n */\n private updateChanges(metaInfo: any, page = 1): Promise<any> {\n const size = 10;\n return this.getChanges(page, size)\n .then(changes => {\n if (changes && changes.length > 0) {\n return Promise.all(changes.map(change => this.updateChange(change, metaInfo)));\n }\n }).then(result => {\n if (result && result.length === size) {\n return this.updateChanges(metaInfo, page + 1);\n }\n });\n }\n}\n","import { Change, FlushContext, Worker } from '../change-log.service';\nimport { LocalDBStore } from '../../models/local-db-store';\nimport { LocalDBManagementService } from '../local-db-management.service';\nimport {isNull, isUndefined} from \"lodash-es\";\n\nconst STORE_KEY = 'errorBlockerStore';\n\nexport class ErrorBlocker implements Worker {\n\n private errorStore;\n\n constructor(private localDBManagementService: LocalDBManagementService) {\n }\n\n public preFlush(context: FlushContext) {\n this.errorStore = context.get(STORE_KEY);\n }\n\n // block all calls related to the error entities\n public preCall(change: Change) {\n if (change && change.service === 'DatabaseService') {\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n switch (change.operation) {\n case 'insertTableData':\n case 'insertMultiPartTableData':\n case 'updateTableData':\n case 'updateMultiPartTableData':\n return this.localDBManagementService.getStore(dataModelName, entityName).then( store => {\n this.blockCall(store, change, dataModelName, entityName, change.params.data);\n });\n case 'deleteTableData':\n return this.localDBManagementService.getStore(dataModelName, entityName).then( store => {\n this.blockCall(store, change, dataModelName, entityName, change.params);\n });\n }\n }\n }\n\n // store error entity id\n public postCallSuccess(change: Change) {\n if (change && change.service === 'DatabaseService') {\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n return this.localDBManagementService.getStore(dataModelName, entityName).then( store => {\n const id = change['dataLocalId'] || change.params.data[store.primaryKeyName];\n if (!(isUndefined(id) || isNull(id))) {\n this.removeError(dataModelName, entityName, id);\n }\n });\n }\n }\n\n // store error entity id\n public postCallError(change: Change) {\n if (change && change.service === 'DatabaseService') {\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n return this.localDBManagementService.getStore(dataModelName, entityName).then( store => {\n const id = change['dataLocalId'] || (change.params.data && change.params.data[store.primaryKeyName]) || change.params[store.primaryKeyName] || change.params.id;\n if (!(isUndefined(id) || isNull(id))) {\n this.recordError(dataModelName, entityName, id);\n }\n });\n }\n }\n\n /**\n * If there is an earlier call of the object or its relations that got failed, then this call will be\n * marked for discard.\n *\n * @param store LocalDBStore\n * @param change change to block\n * @param dataModelName\n * @param entityName\n * @param data\n */\n private blockCall(store: LocalDBStore, change: Change, dataModelName: string, entityName: string, data: any) {\n if (change.hasError === 0) {\n this.checkForPreviousError(store, change, dataModelName, entityName, data);\n store.entitySchema.columns.forEach(col => {\n if (col.foreignRelations) {\n col.foreignRelations.some(foreignRelation => {\n if (data[foreignRelation.sourceFieldName]) {\n this.blockCall(store, change, dataModelName, foreignRelation.targetEntity, data[foreignRelation.sourceFieldName]);\n } else if (data[col.fieldName]) {\n this.checkForPreviousError(store, change, dataModelName, foreignRelation.targetEntity, data, col.fieldName);\n }\n return change.hasError === 1;\n });\n }\n });\n }\n }\n\n // A helper function to check for earlier failures.\n private checkForPreviousError(store: LocalDBStore, change: Change, dataModelName: string, entityName: string, data: any, key?: any) {\n const primaryKey = key || store.primaryKeyName;\n if (this.hasError(dataModelName, entityName, data[primaryKey])) {\n change.hasError = 1;\n change.errorMessage = `Blocked call due to error in previous call of entity [ ${entityName} ] with id [ ${data[primaryKey]} ]`;\n }\n }\n\n private hasError(dataModelName: string, entityName: string, id: any) {\n if (this.errorStore[dataModelName]\n && this.errorStore[dataModelName][entityName]\n && this.errorStore[dataModelName][entityName][id]) {\n return true;\n }\n return false;\n }\n\n // Removes entity identifier from error list.\n private removeError(dataModelName: string, entityName: string, id: any) {\n if (this.errorStore[dataModelName]\n && this.errorStore[dataModelName][entityName]\n && this.errorStore[dataModelName][entityName][id]) {\n delete this.errorStore[dataModelName][entityName][id];\n }\n }\n\n // Save error entity identifier.\n private recordError(dataModelName: string, entityName: string, id: any) {\n this.errorStore[dataModelName] = this.errorStore[dataModelName] || {};\n this.errorStore[dataModelName][entityName] = this.errorStore[dataModelName][entityName] || {};\n this.errorStore[dataModelName][entityName][id] = true;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { isDefined, noop } from '@wm/core';\n\nimport { Change, FlushContext, Worker } from './../change-log.service';\nimport { LocalDBManagementService } from './../local-db-management.service';\nimport { LocalDBStore } from './../../models/local-db-store';\n\nconst STORE_KEY = 'idConflictResolution';\n\n/**\n * In offline database, a insert could generate the Id of an entity. During flush, id of that entity might get changed.\n * Due to that, relationship inconsistency arises. To prevent that, wherever this entity is referred in the next flush\n * call, Id has to be replaced with that of new one.\n */\n@Injectable()\nexport class IdResolver implements Worker {\n\n private idStore;\n private logger;\n private transactionLocalId;\n\n constructor(private localDBManagementService: LocalDBManagementService) {\n this.logger = window.console;\n }\n\n public preFlush(context: FlushContext) {\n this.idStore = context.get(STORE_KEY);\n }\n\n // Exchane Ids, Before any database operation.\n public preCall(change: Change) {\n if (change && change.service === 'DatabaseService') {\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n switch (change.operation) {\n case 'insertTableData':\n case 'insertMultiPartTableData':\n change.params.skipLocalDB = true ;\n return this.localDBManagementService.getStore(dataModelName, entityName)\n .then(store => {\n const primaryKeyName = store.primaryKeyName;\n if (primaryKeyName) {\n this.transactionLocalId = change.params.data[primaryKeyName];\n change['dataLocalId'] = this.transactionLocalId;\n }\n return this.exchangeIds(store, dataModelName, entityName, change.params.data)\n .then(() => {\n if (store.primaryKeyField && store.primaryKeyField.generatorType === 'identity') {\n delete change.params.data[primaryKeyName];\n } else {\n const relationalPrimaryKeyValue = store.getValue(change.params.data, store.primaryKeyName);\n // for the data referring to the relational table based on primary key assign the primaryField values to the relationalPrimaryKeyValue\n if (isDefined(relationalPrimaryKeyValue)) {\n change.params.data[primaryKeyName] = relationalPrimaryKeyValue;\n if (this.transactionLocalId !== null) {\n this.pushIdToStore(dataModelName, entityName, this.transactionLocalId, relationalPrimaryKeyValue);\n }\n }\n this.transactionLocalId = null;\n }\n });\n });\n case 'updateTableData':\n case 'updateMultiPartTableData':\n case 'deleteTableData':\n return this.localDBManagementService.getStore(dataModelName, entityName).then(store => {\n // on update call, passing id to exchangeId as change.params id(local value 10000000+) is not updated with the latest id from db\n this.exchangeId(store, dataModelName, entityName, change.params, 'id');\n if (change.params.data) {\n return this.exchangeIds(store, dataModelName, entityName, change.params.data);\n }\n });\n }\n }\n }\n // After every database insert, track the Id change.\n public postCallSuccess(change: Change, response: any) {\n if (change && change.service === 'DatabaseService'\n && (change.operation === 'insertTableData' || change.operation === 'insertMultiPartTableData')\n && this.transactionLocalId) {\n const data = response[0].body;\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n return this.localDBManagementService.getStore(dataModelName, entityName).then(store => {\n this.pushIdToStore(dataModelName, entityName, this.transactionLocalId, data[store.primaryKeyName]);\n return store.delete(this.transactionLocalId).catch(noop).then(() => {\n this.transactionLocalId = null;\n return store.save(data);\n });\n });\n }\n }\n // store error entity id\n public postCallError(change: Change) {\n if (change && change.service === 'DatabaseService'\n && (change.operation === 'insertTableData' || change.operation === 'insertMultiPartTableData')\n && this.transactionLocalId) {\n const entityName = change.params.entityName;\n const dataModelName = change.params.dataModelName;\n return this.localDBManagementService.getStore(dataModelName, entityName).then(store => {\n change.params.data[store.primaryKeyName] = this.transactionLocalId;\n });\n }\n }\n\n private getEntityIdStore(dataModelName: string, entityName: string) {\n this.idStore[dataModelName] = this.idStore[dataModelName] || {};\n this.idStore[dataModelName][entityName] = this.idStore[dataModelName][entityName] || {};\n return this.idStore[dataModelName][entityName];\n }\n\n // if local id is different, then create a mapping for exchange.\n private pushIdToStore(dataModelName: string, entityName: string, transactionLocalId: any, remoteId: any) {\n if (transactionLocalId !== remoteId) {\n this.getEntityIdStore(dataModelName, entityName)[transactionLocalId] = remoteId;\n this.logger.debug('Conflict found for entity (%s) with local id (%i) and remote Id (%i)', entityName, transactionLocalId, remoteId);\n }\n }\n\n private logResolution(entityName: string, localId: any, remoteId: any) {\n this.logger.debug('Conflict resolved found for entity (%s) with local id (%i) and remote Id (%i)', entityName, localId, remoteId);\n }\n\n // Exchange primary key of the given entity\n private exchangeId(store: LocalDBStore, dataModelName: string, entityName: string, data?: any, keyName?: string) {\n const primaryKeyName = keyName || store.primaryKeyName;\n const entityIdStore = this.getEntityIdStore(dataModelName, entityName);\n if (data && primaryKeyName) {\n const localId = data[primaryKeyName];\n let remoteId = localId;\n while (entityIdStore[remoteId]) {\n remoteId = entityIdStore[remoteId];\n }\n if (remoteId !== localId) {\n data[primaryKeyName] = remoteId;\n this.logResolution(entityName, localId, remoteId);\n }\n }\n }\n\n // Looks primary key changes in the given entity or in the relations\n private exchangeIds(store: LocalDBStore, dataModelName: string, entityName: string, data: any): Promise<any> {\n this.exchangeId(store, dataModelName, entityName, data);\n const exchangeIdPromises = [];\n store.entitySchema.columns.forEach(col => {\n if (col.foreignRelations) {\n col.foreignRelations.forEach( foreignRelation => {\n if (data[col.fieldName]) {// if id value\n this.exchangeId(store, dataModelName, foreignRelation.targetEntity, data, col.fieldName);\n }\n if (data[foreignRelation.sourceFieldName]) {// if object reference\n exchangeIdPromises.push(this.localDBManagementService.getStore(dataModelName, foreignRelation.targetEntity)\n .then(refStore => {\n return this.exchangeIds(refStore, dataModelName, foreignRelation.targetEntity, data[foreignRelation.sourceFieldName]);\n }));\n }\n });\n }\n });\n return Promise.all(exchangeIdPromises);\n }\n}\n","import { DeviceFileService } from '@wm/mobile/core';\n\nimport { Change, Worker } from '../change-log.service';\nimport { LocalDBManagementService } from '../local-db-management.service';\nimport {forEach, isObject, mapValues} from \"lodash-es\";\n\nexport class MultiPartParamTransformer implements Worker {\n\n constructor(\n private deviceFileService: DeviceFileService,\n private localDBManagementService: LocalDBManagementService\n ) {}\n\n public postCallSuccess(change: Change) {\n if (change && change.service === 'DatabaseService') {\n switch (change.operation) {\n case 'insertMultiPartTableData':\n case 'updateMultiPartTableData':\n // clean up files\n forEach(change.params.data, v => {\n // @ts-ignore\n if (isObject(v) && v.wmLocalPath) {\n // @ts-ignore\n this.deviceFileService.removeFile(v.wmLocalPath);\n }\n });\n break;\n }\n }\n }\n\n public transformParamsFromMap(change: Change) {\n if (change && change.service === 'DatabaseService') {\n switch (change.operation) {\n case 'insertMultiPartTableData':\n case 'updateMultiPartTableData':\n return this.localDBManagementService.getStore(change.params.dataModelName, change.params.entityName)\n .then( store => {\n // construct Form data\n return store.deserialize(change.params.data).then(function (formData) {\n change.params.data = formData;\n });\n });\n }\n }\n }\n\n public transformParamsToMap(change: Change) {\n if (change && change.service === 'DatabaseService') {\n switch (change.operation) {\n case 'insertMultiPartTableData':\n case 'updateMultiPartTableData':\n return this.localDBManagementService.getStore(change.params.dataModelName, change.params.entityName)\n .then( store => {\n return store.serialize(change.params.data).then(function (map) {\n change.params.data = map;\n /**\n * As save method called with FormData object, empty row is inserted.\n * Since FormData is converted to map, update the record details now.\n */\n store.save(mapValues(map, function (v) {\n // @ts-ignore\n return (isObject(v) && v.wmLocalPath) || v;\n }));\n return map;\n });\n });\n }\n }\n }\n}\n","import { from } from 'rxjs';\n\nimport { LVService } from '@wavemaker/variables';\n\nimport { NetworkService } from '@wm/mobile/core';\nimport { AbstractHttpService, noop, triggerFn } from '@wm/core';\n\nimport { ColumnInfo, ForeignRelationInfo } from '../models/config';\nimport { LocalDBStore } from '../models/local-db-store';\nimport { ChangeLogService } from '../services/change-log.service';\nimport { LocalDBManagementService } from '../services/local-db-management.service';\nimport { LocalDbService } from '../services/local-db.service';\nimport { WM_LOCAL_OFFLINE_CALL } from './utils';\nimport {clone, cloneDeep, extend, filter, find, forEach, get, isArray, isObject} from \"lodash-es\";\n\nconst apiConfiguration = [{\n 'name' : 'insertTableData',\n 'type' : 'INSERT'\n }, {\n 'name' : 'insertMultiPartTableData',\n 'type' : 'INSERT'\n }, {\n 'name' : 'updateTableData',\n 'type' : 'UPDATE'\n }, {\n 'name' : 'updateMultiPartTableData',\n 'type' : 'UPDATE'\n }, {\n 'name' : 'deleteTableData',\n 'type' : 'DELETE'\n }, {\n 'name' : 'readTableData',\n 'type' : 'READ',\n 'saveResponse': true\n }, {\n 'name' : 'searchTableData',\n 'type' : 'READ',\n 'saveResponse': true\n }, {\n 'name' : 'searchTableDataWithQuery',\n 'type' : 'READ',\n 'saveResponse': true\n }, {\n 'name' : 'getDistinctDataByFields',\n 'type' : 'READ',\n 'saveResponse': false\n }];\n\nlet isOfflineBehaviorAdded = false;\n\nexport class LiveVariableOfflineBehaviour {\n\n private onlineDBService = LVService;\n\n constructor(\n private changeLogService: ChangeLogService,\n private httpService: AbstractHttpService,\n private localDBManagementService: LocalDBManagementService,\n private networkService: NetworkService,\n private offlineDBService: LocalDbService\n ) {}\n\n public add () {\n if (!isOfflineBehaviorAdded) {\n isOfflineBehaviorAdded = true;\n const onlineHandler = this.httpService.sendCallAsObservable;\n if (onlineHandler) {\n this.httpService.sendCallAsObservable = (reqParams, params): any => {\n if (!params && get(reqParams, 'url')) {\n params = {url: reqParams.url};\n }\n // reqParams will contain the full path of insert/update call which will be processed again in parseConfig method\n // and will be appended again with '/services/./.' which will result in deployedUrl + '/service/./.' + '/service/./.' which is wrong.\n // Hence passing url in params\n const clonedParamsUrl = clone(params.url);\n params = extend(params, reqParams);\n const operation = find(apiConfiguration, {name: get(params, 'operation')});\n if (this.networkService.isConnected() || params.onlyOnline || !operation || !params.dataModelName) {\n return from(this.remoteDBcall(operation, onlineHandler, params));\n }\n // converting promise to observable as LVService returns a observable\n return from(this.localDBManagementService.isOperationAllowed(params.dataModelName, params.entityName, operation.type)\n .then(isAllowedInOffline => {\n if (!isAllowedInOffline) {\n return this.remoteDBcall(operation, onlineHandler, params);\n } else {\n let cascader;\n return Promise.resolve().then(() => {\n if (!params.isCascadingStopped &&\n (operation.name === 'insertTableData'\n || operation.name === 'updateTableData')) {\n return this.prepareToCascade(params).then(c => cascader = c);\n }\n }).then(() => {\n return new Promise((resolve, reject) => {\n this.localDBcall(operation, params, resolve, reject, clonedParamsUrl);\n });\n }).then( (response: any) => {\n if (cascader) {\n return cascader.cascade().then(() => {\n return this.getStore(params).then(store => {\n return store.refresh(response.body);\n }).then(data => {\n // data includes parent and child data.\n if (response && response.body) {\n response.body = data;\n }\n return response;\n });\n });\n }\n return response;\n });\n }\n }));\n };\n }\n }\n }\n\n public getStore(params: any): Promise<LocalDBStore> {\n return this.localDBManagementService.getStore(params.dataModelName, params.entityName);\n }\n\n // set hasBlob flag on params when blob field is present\n private hasBlob(store) {\n const blobColumns = filter(store.entitySchema.columns, {\n 'sqlType' : 'blob'\n });\n return !!blobColumns.length;\n }\n\n /*\n * During offline, LocalDBService will answer to all the calls. All data modifications will be recorded\n * and will be reported to DatabaseService when device goes online.\n */\n private localDBcall(operation, params, successCallback, failureCallback, clonedParamsUrl): Promise<any> {\n return new Promise((resolve, reject) => {\n this.offlineDBService[operation.name](params, response => {\n if (operation.type === 'READ') {\n resolve(response);\n } else {\n // add to change log\n params.onlyOnline = true;\n params.url = clonedParamsUrl;\n return this.changeLogService.add('DatabaseService', operation.name, params)\n .then(() => resolve(response));\n }\n });\n }).then((response) => {\n response = {body : response, type: WM_LOCAL_OFFLINE_CALL};\n triggerFn(successCallback, response);\n return response;\n }, failureCallback);\n }\n\n /*\n * During online, all read operations data will be pushed to offline database. Similarly, Update and Delete\n * operations are synced with the offline database.\n */\n private remoteDBcall(operation, onlineHandler, params): Promise<any> {\n return new Promise((resolve, reject) => {\n onlineHandler.call(this.httpService, params).subscribe(response => {\n if (response && response.type) {\n if (!params.skipLocalDB) {\n this.offlineDBService.getStore(params).then((store) => {\n if (operation.type === 'READ' && operation.saveResponse) {\n store.saveAll(response.body.content);\n } else if (operation.type === 'INSERT') {\n params = clone(params);\n params.data = clone(response.body);\n this.offlineDBService[operation.name](params, noop, noop, {\n resetPrimaryKey: false\n });\n } else {\n this.offlineDBService[operation.name](params, noop, noop);\n }\n }).catch(noop);\n }\n resolve(response);\n }\n }, (err) => {\n reject(err);\n });\n });\n }\n\n /**\n * Finds out the nested objects to save and prepares a cloned params.\n */\n private prepareToCascade(params): Promise<any> {\n return this.getStore(params).then(store => {\n const childObjectPromises = [];\n forEach(params.data, (v, k) => {\n let column: ColumnInfo,\n foreignRelation: ForeignRelationInfo,\n childParams;\n // NOTE: Save only one-to-one relations for cascade\n if (isObject(v) && !isArray(v)) {\n column = store.entitySchema.columns.find(c => {\n if (c.primaryKey && c.foreignRelations) {\n foreignRelation = c.foreignRelations.find( f => f.sourceFieldName === k);\n }\n return !!foreignRelation;\n });\n }\n if (column) {\n childParams = cloneDeep(params);\n childParams.entityName = foreignRelation.targetEntity;\n childParams.data = v;\n const childPromise = this.getStore(childParams).then(childStore => {\n const parent = params.data;\n const targetColumns = childStore.entitySchema.columns.find(c => c.name === foreignRelation.targetColumn);\n if (targetColumns && targetColumns.foreignRelations) {\n const parentFieldName = targetColumns.foreignRelations.find( f => f.targetTable === store.entitySchema.name).sourceFieldName;\n childParams.data[parentFieldName] = parent;\n }\n parent[k] = null;\n childParams.onlyOnline = false;\n childParams.isCascadingStopped = true;\n childParams.hasBlob = this.hasBlob(childStore);\n childParams.url = '';\n return () => {\n return Promise.resolve().then(() => {\n const primaryKeyValue = childStore.getValue(childParams.data, childStore.primaryKeyField.fieldName);\n return primaryKeyValue ? childStore.get(primaryKeyValue) : null;\n }).then(object => {\n let operation;\n if (object) {\n operation = childParams.hasBlob ? 'updateMultiPartTableData' : 'updateTableData';\n } else {\n operation = childParams.hasBlob ? 'insertMultiPartTableData' : 'insertTableData';\n }\n return this.onlineDBService[operation](childParams).toPromise();\n });\n };\n });\n childObjectPromises.push(childPromise);\n }\n });\n return Promise.all(childObjectPromises).then(result => {\n return {\n cascade: () => Promise.all(result.map(fn => fn()))\n };\n });\n });\n }\n}\n","import { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { DeviceFileService, DeviceFileUploadService, IUploadResponse, NetworkService, UploadRequest } from '@wm/mobile/core';\n\nimport { ChangeLogService } from '../services/change-log.service';\n\nlet isOfflineBehaviourAdded = false;\n\nexport class FileUploadOfflineBehaviour {\n\n constructor(\n private changeLogService: ChangeLogService,\n private deviceFileService: DeviceFileService,\n private deviceFileUploadService: DeviceFileUploadService,\n private file: File,\n private networkService: NetworkService,\n private uploadDir: string\n ) {\n\n }\n\n public add() {\n if (isOfflineBehaviourAdded) {\n return;\n }\n isOfflineBehaviourAdded = true;\n const orig = this.deviceFileUploadService.upload;\n this.deviceFileUploadService['uploadToServer'] = orig;\n this.deviceFileUploadService.upload = (url: string, fileParamName: string, localPath: string, fileName?: string, params?: any, headers?: any): Promise<IUploadResponse> => {\n if (this.networkService.isConnected()) {\n return orig.call(this.deviceFileUploadService, url, fileParamName, localPath, fileName, params, headers);\n } else {\n return this.uploadLater(url, fileParamName, localPath, fileName, params, headers).then(response => {\n return {\n text: JSON.stringify(response),\n headers: null,\n response: response\n };\n });\n }\n };\n }\n\n public uploadLater(url: string, fileParamName: string, localPath: string, fileName?: string, params?: any, headers?: any): Promise<any> {\n const i = localPath.lastIndexOf('/'),\n soureDir = localPath.substring(0, i),\n soureFile = localPath.substring(i + 1),\n destFile = this.deviceFileService.appendToFileName(soureFile),\n filePath = this.uploadDir + '/' + destFile;\n return this.file.copyFile(soureDir, soureFile, this.uploadDir, destFile)\n .then(() => {\n return this.changeLogService.add('OfflineFileUploadService', 'uploadToServer', {\n file: filePath,\n ftOptions: {\n fileKey: fileParamName,\n fileName: fileName\n },\n params: params,\n headers: headers,\n serverUrl: url,\n deleteOnUpload: true\n });\n }).then(() => {\n return [{\n fileName: soureFile,\n path: filePath,\n length: 0,\n success: true,\n inlinePath: filePath + '?inline'\n }];\n });\n }\n}\n","import { Observable, from } from 'rxjs';\n\nimport { AbstractHttpService } from '@wm/core';\nimport { NetworkService } from '@wm/mobile/core';\n\nimport { ChangeLogService } from '../services/change-log.service';\nimport { LocalDBManagementService } from '../services/local-db-management.service';\nimport { WM_LOCAL_OFFLINE_CALL } from './utils';\nimport {extend, get, isEmpty, trim} from \"lodash-es\";\n\nconst NUMBER_REGEX = /^\\d+(\\.\\d+)?$/;\nlet isOfflineBehaviourAdded = false;\nexport class NamedQueryExecutionOfflineBehaviour {\n\n constructor(\n private changeLogService: ChangeLogService,\n private httpService: AbstractHttpService,\n private localDBManagementService: LocalDBManagementService,\n private networkService: NetworkService\n ) {\n\n }\n\n public add () {\n if (isOfflineBehaviourAdded) {\n return;\n }\n isOfflineBehaviourAdded = true;\n const orig = this.httpService.sendCallAsObservable;\n this.httpService.sendCallAsObservable = (reqParams: any, params?: any): Observable<any> => {\n if (!params && get(reqParams, 'url')) {\n params = {url: reqParams.url};\n }\n if (!this.networkService.isConnected() && params.url.indexOf('/queryExecutor/') > 0) {\n return from(this.executeLocally(params));\n } else {\n return orig.call(this.httpService, reqParams, params);\n }\n };\n }\n\n private executeLocally(params: any): Promise<any> {\n const url = params.url,\n hasUrlParams = url.indexOf('?') > 0,\n dbName = this.substring(url, 'services/', '/queryExecutor'),\n queryName = this.substring(url, 'queries/', hasUrlParams ? '?' : undefined),\n urlParams = hasUrlParams ? this.getHttpParamMap(this.substring(url, '?', undefined)) : {},\n dataParams = this.getHttpParamMap(params.dataParams),\n queryParams = extend(urlParams, dataParams);\n return this.localDBManagementService.executeNamedQuery(dbName, queryName, queryParams)\n .then(result => {\n const rows = result.rows;\n if (result.rowsAffected) {\n return this.changeLogService.add('WebService', 'invokeJavaService', params)\n .then(() => result.rowsAffected);\n } else {\n return {\n type: WM_LOCAL_OFFLINE_CALL,\n body: {\n totalPages: rows && rows.length > 0 ? 1 : 0,\n totalElements: rows.length,\n first: true,\n sort: null,\n numberOfElements: rows.length,\n last: true,\n size: params.size,\n number: 0,\n content: rows\n }\n };\n }\n });\n }\n\n private substring(source: string, start: string, end: string): string {\n if (start) {\n const startIndex = source.indexOf(start) + start.length,\n endIndex = end ? source.indexOf(end) : undefined;\n return source.substring(startIndex, endIndex);\n }\n return undefined;\n }\n\n private getHttpParamMap(str: string): any {\n const result = {};\n if (str) {\n str = decodeURIComponent(str);\n str.split('&').forEach(c => {\n const csplits = c.split('=');\n if (isEmpty(trim(csplits[1])) || !NUMBER_REGEX.test(csplits[1])) {\n result[csplits[0]] = csplits[1];\n } else {\n result[csplits[0]] = parseInt(csplits[1], 10);\n }\n });\n }\n return result;\n }\n}\n","import { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { App, noop, triggerFn } from '@wm/core';\nimport { DeviceService, NetworkService } from '@wm/mobile/core';\nimport { SecurityService } from '@wm/security';\nimport {debounce} from \"lodash-es\";\n\ndeclare const cordova;\nconst SECURITY_FILE = 'logged-in-user.info';\ndeclare const resolveLocalFileSystemURL;\n\nlet isOfflineBehaviourAdded = false;\n\nexport class SecurityOfflineBehaviour {\n\n private saveSecurityConfigLocally;\n private securityConfig: any;\n\n constructor(\n private app: App,\n private file: File,\n private deviceService: DeviceService,\n private networkService: NetworkService,\n private securityService: SecurityService\n ) {\n this.saveSecurityConfigLocally = debounce((config: any) => {\n this._saveSecurityConfigLocally(config);\n }, 1000);\n }\n\n public add() {\n if (isOfflineBehaviourAdded) {\n return;\n }\n isOfflineBehaviourAdded = true;\n const origLoad = this.securityService.load;\n const origAppLogout = this.securityService.appLogout;\n /**\n * Add offline behaviour to SecurityService.getConfig. When offline, this funcation returns security\n * config of last logged-in user will be returned, provided the user did not logout last time.\n *\n * @param successCallback\n * @param failureCallback\n */\n this.securityService.load = (forceFlag?: boolean) => {\n return new Promise((resolve, reject) => {\n if (this.networkService.isConnected()) {\n origLoad.call(this.securityService, forceFlag).then(config => {\n this.securityConfig = config;\n this.saveSecurityConfigLocally(config);\n resolve(this.securityConfig);\n }, reject);\n } else {\n this.readLocalSecurityConfig().then((config = {}) => {\n this.securityConfig = config;\n this.securityService.config = config;\n return config;\n }, () => origLoad.call(this.securityConfig)).then(resolve, reject);\n }\n });\n };\n\n /**\n * When users logs out, local config will be removed. If the user is offline and logs out, then user\n * will be logged out from the app and cookies are invalidated when app goes online next time.\n *\n * @param successCallback\n * @param failureCallback\n */\n this.securityService.appLogout = (successCallback, failureCallback) => {\n this.securityConfig = {\n authenticated: false,\n loggedOut: true,\n securityEnabled: this.securityConfig && this.securityConfig.securityEnabled,\n loggedOutOffline: !this.networkService.isConnected(),\n loginConfig: this.securityConfig && this.securityConfig.loginConfig,\n userInfo: null\n };\n this._saveSecurityConfigLocally(this.securityConfig).catch(noop).then(() => {\n if (this.networkService.isConnected()) {\n origAppLogout.call(this.securityService, successCallback, failureCallback);\n } else {\n location.assign(window.location.origin + window.location.pathname);\n }\n });\n };\n /**\n * @param successCallback\n */\n this.securityService.isAuthenticated = successCallback => {\n triggerFn(successCallback, this.securityConfig.authenticated === true);\n };\n this.deviceService.whenReady().then(() => this.clearLastLoggedInUser());\n /**\n * If the user has chosen to logout while app is offline, then invalidation of cookies happens when\n * app comes online next time.\n */\n this.app.subscribe('onNetworkStateChange', data => {\n if (data.isConnected) {\n this.clearLastLoggedInUser();\n }\n });\n }\n\n private _saveSecurityConfigLocally(config: any): Promise<any> {\n return this.file.writeFile(cordova.file.dataDirectory, SECURITY_FILE, JSON.stringify(config), { replace : true });\n }\n\n private clearLastLoggedInUser() {\n return this.readLocalSecurityConfig().then(config => {\n if (config && config.loggedOutOffline) {\n this.securityService.appLogout(null, null);\n } else if (!this.networkService.isConnected()) {\n this.securityConfig = config || {};\n }\n });\n }\n\n private readLocalSecurityConfig(): Promise<any> {\n // reading the security info from file in dataDirectory but when this file is not available then fetching the config from the app directory\n return new Promise((resolve, reject) => {\n const rootDir = cordova.file.dataDirectory;\n this.file.checkFile(rootDir, SECURITY_FILE).then(() => {\n return this.readFileAsTxt(rootDir, SECURITY_FILE).then(resolve, reject);\n }, () => {\n const folderPath = cordova.file.applicationDirectory + 'www/metadata/app',\n fileName = 'security-config.json';\n return this.readFileAsTxt(folderPath, fileName).then(resolve, reject);\n });\n });\n }\n\n private readFileAsTxt(folderPath, fileName): Promise<any> {\n return this.file.readAsText(folderPath, fileName).then(JSON.parse).catch(noop);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { AbstractHttpService, App, hasCordova, noop } from '@wm/core';\nimport { DeviceFileService, DeviceFileUploadService, DeviceService, NetworkService } from '@wm/mobile/core';\nimport { SecurityService } from '@wm/security';\n\nimport { ChangeLogService } from './services/change-log.service';\nimport { LocalDBManagementService } from './services/local-db-management.service';\nimport { LocalDbService } from './services/local-db.service';\nimport { FileHandler, UploadedFilesImportAndExportService } from './services/workers/file-handler';\nimport { ErrorBlocker } from './services/workers/error-blocker';\nimport { IdResolver } from './services/workers/id-resolver';\nimport { MultiPartParamTransformer } from './services/workers/multi-part-param-transformer';\nimport { LiveVariableOfflineBehaviour } from './utils/live-variable.utils';\nimport { FileUploadOfflineBehaviour } from './utils/file-upload.utils';\nimport { NamedQueryExecutionOfflineBehaviour } from './utils/query-executor.utils';\nimport { SecurityOfflineBehaviour } from './utils/security.utils';\n\n@NgModule({\n imports: [\n CommonModule\n ],\n declarations: [],\n exports: [],\n providers: [\n // add providers to mobile-runtime module.\n ]\n})\nexport class OfflineModule {\n static initialized = false;\n // Startup services have to be added only once in the app life-cycle.\n static initialize(app: App,\n changeLogService: ChangeLogService,\n deviceService: DeviceService,\n deviceFileService: DeviceFileService,\n deviceFileUploadService: DeviceFileUploadService,\n file: File,\n httpService: AbstractHttpService,\n localDBManagementService: LocalDBManagementService,\n localDbService: LocalDbService,\n networkService: NetworkService,\n securityService: SecurityService) {\n if (this.initialized) {\n return;\n }\n\n deviceService.addStartUpService({\n getServiceName: () => 'OfflineStartupService',\n start: () => {\n if (window['SQLitePlugin']) {\n localDBManagementService.setLogSQl((sessionStorage.getItem('wm.logSql') === 'true') || (sessionStorage.getItem('debugMode') === 'true'));\n (window as any).logSql = (flag = true) => {\n localDBManagementService.setLogSQl(flag);\n sessionStorage.setItem('wm.logSql', flag ? 'true' : 'false');\n };\n (window as any).executeLocalSql = (dbName, query, params?) => {\n localDBManagementService.executeSQLQuery(dbName, query, params, true);\n };\n return localDBManagementService.loadDatabases().then(() => {\n changeLogService.addWorker(new IdResolver(localDBManagementService));\n changeLogService.addWorker(new ErrorBlocker(localDBManagementService));\n changeLogService.addWorker(new FileHandler());\n changeLogService.addWorker(new MultiPartParamTransformer(deviceFileService, localDBManagementService));\n new LiveVariableOfflineBehaviour(changeLogService, httpService, localDBManagementService, networkService, localDbService).add();\n new FileUploadOfflineBehaviour(changeLogService, deviceFileService, deviceFileUploadService, file, networkService, deviceFileService.getUploadDirectory()).add();\n new NamedQueryExecutionOfflineBehaviour(changeLogService, httpService, localDBManagementService, networkService).add();\n localDBManagementService.registerCallback(new UploadedFilesImportAndExportService(changeLogService, deviceFileService, localDBManagementService, file));\n changeLogService.addWorker({\n onAddCall: () => {\n if (!networkService.isConnected()) {\n networkService.disableAutoConnect();\n }\n },\n postFlush: stats => {\n if (stats.totalTaskCount > 0) {\n localDBManagementService.close()\n .catch(noop)\n .then(() => {\n location.assign(window.location.origin + window.location.pathname);\n });\n }\n }\n });\n });\n }\n return Promise.resolve();\n }\n });\n new SecurityOfflineBehaviour(app, file, deviceService, networkService, securityService).add();\n }\n\n\n constructor(\n app: App,\n changeLogService: ChangeLogService,\n deviceService: DeviceService,\n deviceFileService: DeviceFileService,\n deviceFileUploadService: DeviceFileUploadService,\n file: File,\n httpService: AbstractHttpService,\n localDBManagementService: LocalDBManagementService,\n localDbService: LocalDbService,\n networkService: NetworkService,\n securityService: SecurityService\n ) {\n if (hasCordova()) {\n OfflineModule.initialize(app,\n changeLogService,\n deviceService,\n deviceFileService,\n deviceFileUploadService,\n file,\n httpService,\n localDBManagementService,\n localDbService,\n networkService,\n securityService);\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n\nimport { DeviceFileUploadService } from '@wm/mobile/core';\nimport { LVService } from '@wavemaker/variables';\n\nimport { Change, PushService } from './change-log.service';\n\n@Injectable()\nexport class PushServiceImpl implements PushService {\n\n constructor(\n private deviceFileUploadService: DeviceFileUploadService\n ) {}\n\n // Returns a promise from the observable.\n private getPromiseFromObs(cb) {\n return new Promise((resolve, reject) => {\n cb.subscribe(response => {\n if (response && response.type) {\n resolve(response);\n }\n }, reject);\n });\n }\n\n public push(change: Change): Promise<any> {\n const params = change.params;\n switch (change.service) {\n case 'DatabaseService':\n switch (change.operation) {\n case 'insertTableData':\n return this.getPromiseFromObs(LVService.insertTableData(change.params, null, null));\n case 'insertMultiPartTableData':\n return this.getPromiseFromObs(LVService.insertMultiPartTableData(change.params, null, null));\n case 'updateTableData':\n return this.getPromiseFromObs(LVService.updateTableData(change.params, null, null));\n case 'updateMultiPartTableData':\n return this.getPromiseFromObs(LVService.updateMultiPartTableData(change.params, null, null));\n case 'deleteTableData':\n return this.getPromiseFromObs(LVService.deleteTableData(change.params, null, null));\n }\n case 'OfflineFileUploadService':\n if (change.operation === 'uploadToServer') {\n return this.deviceFileUploadService['uploadToServer'].call(\n this.deviceFileUploadService,\n params.serverUrl,\n params.ftOptions.fileKey,\n params.file,\n params.ftOptions.fileName,\n params.params,\n params.headers);\n }\n }\n return Promise.reject( `${change.service} service with operation ${change.operation} is not supported for push.`);\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observer } from 'rxjs';\n\nimport { $parseExpr, App, defer, getAbortableDefer, noop } from '@wm/core';\nimport { NetworkService } from '@wm/mobile/core';\n\nimport { LiveVariableUtils, LVService } from '@wavemaker/variables';\n\nimport { LocalDBManagementService } from './local-db-management.service';\nimport { PullInfo } from './change-log.service';\nimport { LocalKeyValueService } from './local-key-value.service';\nimport { DBInfo, EntityInfo, PullType } from '../models/config';\nimport {\n chain,\n cloneDeep,\n find,\n findIndex,\n forEach,\n isEmpty,\n isNaN,\n isNil, isString,\n map,\n now,\n reduce,\n remove,\n slice, sortBy,\n startsWith\n} from \"lodash-es\";\n\ndeclare const moment;\nconst LAST_PULL_INFO_KEY = 'localDBManager.lastPullInfo';\n\n/**\n * a utility api to abort pull process.\n *\n * @type {{start, add, remove, abort}}\n */\nconst pullProcessManager = (() => {\n const promises = {};\n return {\n start: promise => {\n promise.$$pullProcessId = 'PULL_' + now();\n },\n add: (pullPromise: Promise<PullInfo>, promise: Promise<any>) => {\n const pullProcessId = (pullPromise as any).$$pullProcessId;\n if (!promises[pullProcessId]) {\n promises[pullProcessId] = [];\n }\n promises[pullProcessId].push(promise);\n },\n remove: (pullPromise: Promise<PullInfo>, promise: Promise<any>) => {\n const pullProcessId = (pullPromise as any).$$pullProcessId;\n remove(promises[pullProcessId], promise);\n if (isEmpty(promises[pullProcessId])) {\n delete promises[pullProcessId];\n }\n },\n abort: (pullPromise: Promise<PullInfo>) => {\n const pullProcessId = (pullPromise as any).$$pullProcessId;\n if (promises[pullProcessId]) {\n forEach(promises[pullProcessId], function (p) {\n if (p && p.abort) {\n p.abort();\n }\n });\n delete promises[pullProcessId];\n }\n (pullPromise as any).$$isMarkedToAbort = true;\n return pullPromise.catch(function () {\n return 'cancelled';\n });\n }\n };\n})();\n\n/**\n * LocalDBDataPullService has API to pull data from remote Server to local Database.\n */\n@Injectable({providedIn: 'root'})\nexport class LocalDBDataPullService {\n static readonly SERVICE_NAME = 'LocalDBDataPullService';\n constructor(\n private app: App,\n private localDBManagementService: LocalDBManagementService,\n private localKeyValueService: LocalKeyValueService,\n private networkService: NetworkService\n ) {\n // Listen for db creation. When db is created, then initialize last pull info.\n this.localDBManagementService.registerCallback({\n onDbCreate: (info) => {\n this.localKeyValueService.put(LAST_PULL_INFO_KEY, {\n databases: [],\n totalRecordsToPull: 0,\n totalPulledRecordCount: 0,\n startTime: new Date(0),\n endTime: new Date(info.dbSeedCreatedOn)\n });\n }\n });\n }\n\n /**\n * If deltaFieldName is set,last pull time is greater than zero and query used in last pull is same as the\n * query for the current pull, then delta criteria is attached to the query.\n *\n * @param db\n * @param entityName\n * @param query\n * @returns {any}\n */\n private addDeltaCriteria(db: DBInfo, entityName: string, query: string): Promise<string> {\n const entitySchema = db.schema.entities[entityName],\n deltaFieldName = entitySchema.pullConfig.deltaFieldName,\n deltaField = find(entitySchema.columns, {'fieldName': deltaFieldName}) || {};\n\n let isBundledEntity;\n\n if (!isEmpty(deltaFieldName)) {\n return this.localDBManagementService.isBundled(db.schema.name, entityName)\n .then(flag => isBundledEntity = flag)\n .then(() => this.getLastPullInfo())\n .then(lastPullInfo => {\n let lastPullTime = (lastPullInfo && lastPullInfo.startTime && lastPullInfo.startTime.getTime());\n const lastPullDBInfo = find(lastPullInfo && lastPullInfo.databases, {'name': db.schema.name}),\n lastPullEntityInfo = find(lastPullDBInfo && lastPullDBInfo.entities, {'entityName': entityName}) || {};\n\n if (!lastPullTime && isBundledEntity) {\n // For bundled entity when there is no last pull, fetch records that got modified after db creation.\n lastPullTime = (lastPullInfo && lastPullInfo.endTime && lastPullInfo.endTime.getTime());\n lastPullEntityInfo.query = query;\n }\n if (lastPullEntityInfo.query === query && lastPullTime > 0) {\n if (isEmpty(query)) {\n query = '';\n } else {\n query += ' AND ';\n }\n if (deltaField.sqlType === 'datetime') {\n query += deltaFieldName + ' > \\'' + moment(lastPullTime).utc().format('YYYY-MM-DDTHH:mm:ss') + '\\'';\n } else {\n query += deltaFieldName + ' > ' + lastPullTime;\n }\n }\n return query;\n }, () => Promise.resolve(query));\n }\n return Promise.resolve(query);\n }\n\n /**\n * copies the data from remote db to local db\n * @param {DBInfo} db\n * @param {string} entityName\n * @param {boolean} clearDataBeforePull\n * @param pullPromise\n * @param {Observer<any>} progressObserver\n * @returns {Promise<any>}\n */\n private copyDataFromRemoteDBToLocalDB(db: DBInfo, entityName: string, clearDataBeforePull: boolean, pullPromise: Promise<PullInfo>, progressObserver: Observer<any>) {\n const store = (db as any).stores[entityName],\n entitySchema = db.schema.entities[entityName],\n result = {\n entityName: entityName,\n totalRecordsToPull: 0,\n pulledRecordCount: 0\n };\n\n let inProgress = 0,\n pullComplete = false,\n filter;\n\n return new Promise((resolve, reject) => {\n this.prepareQuery(db, entityName)\n .then(query => {\n (result as any).query = query;\n return this.addDeltaCriteria(db, entityName, query);\n }).then(query => {\n // Clear if clearDataBeforePull is true and delta query is not used\n if (clearDataBeforePull && (result as any).query === query) {\n return store.clear()\n .then(() => {\n return query;\n });\n }\n return query;\n }).then(query => {\n filter = isEmpty(query) ? '' : 'q=' + query;\n return this.getTotalRecordsToPull(db, entitySchema, filter, pullPromise);\n }).then(maxNoOfRecords => {\n const pageSize = entitySchema.pullConfig.size || 100,\n maxNoOfPages = Math.ceil(maxNoOfRecords / pageSize);\n\n result.totalRecordsToPull = maxNoOfRecords;\n\n let sort = entitySchema.pullConfig.orderBy;\n sort = (isEmpty(sort) ? '' : sort + ',') + store.primaryKeyName;\n\n progressObserver.next(result);\n\n const _progressObserver = { next: data => {\n inProgress++;\n data = slice(data, 0, result.totalRecordsToPull - result.pulledRecordCount);\n store.saveAll(data).then(() => {\n result.pulledRecordCount += data ? data.length : 0;\n progressObserver.next(result);\n }).catch(noop)\n .then(() => {\n inProgress--;\n if (inProgress === 0 && pullComplete) {\n resolve(result);\n }\n });\n }, error: null, complete: null\n };\n\n return this._pullEntityData(db, entityName, filter, sort, maxNoOfPages, pageSize, 1, pullPromise, undefined, _progressObserver);\n }).then(null, reject)\n .catch(noop)\n .then(() => {\n pullComplete = true;\n if (inProgress === 0) {\n resolve(result);\n }\n });\n });\n }\n\n // If expression starts with 'bind:', then expression is evaluated and result is returned.\n private evalIfBind(expression: string) {\n if (startsWith(expression, 'bind:')) {\n expression = expression.replace(/\\[\\$\\i\\]/g, '[0]');\n return $parseExpr(expression.replace('bind:', ''))(this.app);\n }\n return expression;\n }\n\n /**\n * Executes DatabaseService.countTableDataWithQuery as a promise API.\n * @param params\n * @returns Promise\n */\n private executeDatabaseCountQuery(params: Object): Promise<any> {\n return new Promise((resolve, reject) => {\n LVService.countTableDataWithQuery(params, null, null).subscribe(response => resolve(response.body), reject);\n });\n }\n\n /**\n * Executes DatabaseService.searchTableDataWithQuery as a promise API.\n * @param params\n * @returns Promise\n */\n private executeDatabaseSearchQuery(params: Object): Promise<any> {\n return new Promise((resolve, reject) => {\n return LVService.searchTableDataWithQuery(params, null, null).subscribe(response => resolve(response && response.body && response.body.content), reject);\n });\n }\n\n /**\n * Computes the maximum number of records to pull.\n *\n * @param db\n * @param entitySchema\n * @param filter\n * @param pullPromise\n * @returns {*}\n */\n private getTotalRecordsToPull(db: DBInfo, entitySchema: EntityInfo, filter: string, pullPromise: Promise<PullInfo>): Promise<number> {\n const params = {\n dataModelName: db.schema.name,\n entityName: entitySchema.entityName,\n queryParams: filter\n };\n return this.retryIfNetworkFails(() => {\n return this.executeDatabaseCountQuery(params).then(function (response) {\n const totalRecordCount = response,\n maxRecordsToPull = parseInt((entitySchema.pullConfig as any).maxNumberOfRecords);\n if (isNaN(maxRecordsToPull) || maxRecordsToPull <= 0 || totalRecordCount < maxRecordsToPull) {\n return totalRecordCount;\n }\n return maxRecordsToPull;\n });\n }, pullPromise);\n }\n\n private prepareQuery(db: DBInfo, entityName: string): Promise<string> {\n let query;\n const entitySchema = db.schema.entities[entityName];\n\n return this.localDBManagementService.isBundled(db.schema.name, entityName)\n .then(isBundledEntity => {\n let hasNullAttributeValue = false;\n if (isBundledEntity || isEmpty(entitySchema.pullConfig.query)) {\n query = cloneDeep(entitySchema.pullConfig.filter);\n query = map(query, v => {\n v.attributeValue = this.evalIfBind(v.attributeValue);\n hasNullAttributeValue = hasNullAttributeValue || isNil(v.attributeValue);\n return v;\n });\n if (hasNullAttributeValue) {\n return Promise.reject('Null criteria values are present');\n }\n query = sortBy(query, 'attributeName');\n query = LiveVariableUtils.getSearchQuery(query, ' AND ', true);\n } else {\n query = this.evalIfBind(entitySchema.pullConfig.query);\n }\n if (isNil(query)) {\n return Promise.resolve(null);\n }\n\n return Promise.resolve(encodeURIComponent(query));\n });\n }\n\n /**\n *\n * @param db\n * @param clearDataBeforePull\n * @param pullPromise\n * @param progressObserver\n * @returns {*}\n */\n private _pullDbData(db: DBInfo, clearDataBeforePull: boolean, pullPromise: Promise<PullInfo>, progressObserver: Observer<any>): Promise<any> {\n const datamodelName = db.schema.name,\n result = {\n name: db.schema.name,\n entities: [],\n totalRecordsToPull: 0,\n pulledRecordCount: 0,\n completedTaskCount: 0,\n totalTaskCount: 0\n };\n\n const storePromises = [];\n\n forEach(db.schema.entities, entity => {\n // @ts-ignore\n storePromises.push(this.localDBManagementService.getStore(datamodelName, entity.entityName));\n });\n\n return new Promise((resolve, reject) => {\n Promise.all(storePromises)\n .then((stores) => {\n const entities = [];\n stores.forEach(store => {\n const pullConfig = store.entitySchema.pullConfig;\n const pullType = pullConfig.pullType;\n if (pullType === PullType.APP_START || (pullType === PullType.BUNDLED && (pullConfig as any).deltaFieldName)) {\n entities.push(store.entitySchema);\n }\n });\n const pullPromises = chain(entities)\n .map(entity => {\n const _progressObserver = {\n next: info => {\n const i = findIndex(result.entities, {'entityName': info.entityName});\n if (i >= 0) {\n result.entities[i] = info;\n } else {\n result.entities.push(info);\n }\n result.pulledRecordCount = reduce(result.entities, function (sum, entityPullInfo) {\n return sum + entityPullInfo.pulledRecordCount;\n }, 0);\n result.totalRecordsToPull = reduce(result.entities, function (sum, entityPullInfo) {\n return sum + entityPullInfo.totalRecordsToPull;\n }, 0);\n progressObserver.next(result);\n }, error: null, complete: null\n };\n return this.copyDataFromRemoteDBToLocalDB(db, entity.entityName, clearDataBeforePull, pullPromise, _progressObserver)\n .then(function (info) {\n result.completedTaskCount++;\n progressObserver.next(result);\n return info;\n }, null);\n }).value();\n\n result.totalTaskCount = pullPromises.length;\n progressObserver.next(result);\n\n Promise.all(pullPromises).then(resolve, reject);\n });\n });\n }\n\n /**\n * Pulls data of the given entity from remote server.\n * @param db\n * @param entityName\n * @param sort\n * @param maxNoOfPages\n * @param pageSize\n * @param currentPage\n * @param filter\n * @param pullPromise\n * @param promise\n * @returns {*}\n */\n private _pullEntityData(db: DBInfo, entityName: string, filter: string, sort, maxNoOfPages: number, pageSize: number, currentPage: number, pullPromise: Promise<PullInfo>, deferred: any, progressObserver?: Observer<any>) {\n const dataModelName = db.schema.name;\n\n if (!deferred) {\n deferred = defer();\n }\n\n if (currentPage > maxNoOfPages) {\n return deferred.resolve();\n }\n const params = {\n dataModelName: dataModelName,\n entityName: entityName,\n page: currentPage,\n size: pageSize,\n data: filter,\n sort: sort,\n onlyOnline: true,\n skipLocalDB: true\n };\n this.retryIfNetworkFails(() => {\n return this.executeDatabaseSearchQuery(params);\n }, pullPromise).then(response => {\n progressObserver.next(response);\n this._pullEntityData(db, entityName, filter, sort, maxNoOfPages, pageSize, currentPage + 1, pullPromise, deferred, progressObserver);\n }, deferred.reject);\n\n return deferred.promise;\n }\n\n\n /**\n * If fn fails and network is not there\n * @param fn\n * @param pullPromise\n * @returns {*}\n */\n private retryIfNetworkFails(fn: Function, pullPromise: Promise<PullInfo>) {\n if ((pullPromise as any).$$isMarkedToAbort) {\n return Promise.reject('aborted');\n }\n const promise = this.networkService.retryIfNetworkFails(fn);\n pullProcessManager.add(pullPromise, promise);\n promise.catch(noop)\n .then(() => {\n pullProcessManager.remove(pullPromise, promise);\n });\n return promise;\n }\n\n /**\n * Tries to cancel the corresponding pull process that gave the given promise.\n * @param promise\n * @returns {any}\n */\n public cancel(promise: Promise<any>) {\n return pullProcessManager.abort(promise);\n }\n\n /**\n * fetches the database from the dbName.\n * @param dbName\n * @returns {Promise<any>}\n */\n public getDb(dbName: string) {\n return this.localDBManagementService.loadDatabases()\n .then(databases => {\n const db = find(databases, {'name': dbName});\n return db || Promise.reject('Local database (' + dbName + ') not found');\n });\n }\n\n /**\n * @returns {any} that has total no of records fetched, start and end timestamps of last successful pull\n * of data from remote server.\n */\n public getLastPullInfo(): Promise<PullInfo> {\n return this.localKeyValueService.get(LAST_PULL_INFO_KEY).then(info => {\n if (isString(info.startTime)) {\n info.startTime = new Date(info.startTime);\n }\n if (isString(info.endTime)) {\n info.endTime = new Date(info.endTime);\n }\n return info;\n });\n }\n\n /**\n * Clears (based on parameter) and pulls data ('BUNDLED' data based on parameter) from server using the\n * configured rules in offline configuration.\n *\n * @param clearDataBeforePull boolean\n * @param {Observer<any>} progressObserver\n * @returns {any}\n */\n public pullAllDbData(clearDataBeforePull: boolean, progressObserver: Observer<any>): Promise<PullInfo> {\n const deferred = getAbortableDefer(),\n pullInfo = {\n completedTaskCount: 0,\n totalTaskCount: 0,\n inProgress: true,\n databases: [],\n totalRecordsToPull: 0,\n totalPulledRecordCount: 0,\n startTime: new Date(),\n endTime: new Date()\n };\n\n this.localDBManagementService.loadDatabases()\n .then(databases => {\n const dataPullPromises = chain(databases).filter(function (db) {\n return !db.schema.isInternal;\n }).map(db => {\n pullProcessManager.start(deferred.promise);\n\n const _progressObserver: Observer<any> = {next: data => {\n const i = findIndex(pullInfo.databases, {'name': data.name});\n if (i >= 0) {\n pullInfo.databases[i] = data;\n } else {\n pullInfo.databases.push(data);\n }\n pullInfo.totalTaskCount = reduce(pullInfo.databases, function (sum, dbPullInfo) {\n return sum + dbPullInfo.totalTaskCount;\n }, 0);\n pullInfo.completedTaskCount = reduce(pullInfo.databases, function (sum, dbPullInfo) {\n return sum + dbPullInfo.completedTaskCount;\n }, 0);\n pullInfo.totalPulledRecordCount = reduce(pullInfo.databases, function (sum, dbPullInfo) {\n return sum + dbPullInfo.pulledRecordCount;\n }, 0);\n pullInfo.totalRecordsToPull = reduce(pullInfo.databases, function (sum, dbPullInfo) {\n return sum + dbPullInfo.totalRecordsToPull;\n }, 0);\n progressObserver.next(pullInfo);\n }, error: null, complete: null\n };\n\n return this._pullDbData(db, clearDataBeforePull, deferred.promise, _progressObserver);\n }).value();\n return Promise.all(dataPullPromises);\n }).then(() => {\n pullInfo.endTime = new Date();\n pullInfo.inProgress = false;\n this.localKeyValueService.put(LAST_PULL_INFO_KEY, pullInfo);\n deferred.resolve(pullInfo);\n }, deferred.reject);\n\n return deferred.promise;\n }\n\n /**\n * Clears (based on parameter) and pulls data ('BUNDLED' data based on parameter) of the given database from server using\n * the configured rules in offline configuration.\n *\n * @param {string} databaseName\n * @param {boolean} clearDataBeforePull\n * @param {Observer<any>} progressObserver\n * @returns {Promise}\n */\n public pullDbData(databaseName: string, clearDataBeforePull: boolean, progressObserver: Observer<any>): Promise<any> {\n const deferred = getAbortableDefer();\n\n this.getDb(databaseName).then(db => {\n return this._pullDbData(db, clearDataBeforePull, deferred.promise, progressObserver);\n }).then(deferred.resolve, deferred.reject);\n\n return deferred.promise;\n }\n\n /**\n * Clears (based on parameter) and pulls data of the given entity and database from\n * server using the configured rules in offline configuration.\n * @param databaseName, name of the database from which data has to be pulled.\n * @param entityName, name of the entity from which data has to be pulled\n * @param clearDataBeforePull, if set to true, then data of the entity will be deleted.\n * @param progressObserver, observer the progress values\n */\n public pullEntityData(databaseName: string, entityName: string, clearDataBeforePull: boolean, progressObserver: Observer<any>): Promise<any> {\n const deferred = getAbortableDefer();\n\n this.getDb(databaseName)\n .then((db) => {\n return this.copyDataFromRemoteDBToLocalDB(db, entityName, clearDataBeforePull, deferred.promise, progressObserver);\n }).then(deferred.resolve, deferred.reject);\n\n return deferred.promise;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["parseInt","i2","i3","i4.LocalKeyValueService","i1.LocalDBManagementService","i2.LocalKeyValueService","STORE_KEY","isOfflineBehaviourAdded","i1","i2.ChangeLogService","i4","i5.LocalDBManagementService","i6.LocalDbService","i7","i2.LocalDBManagementService","i3.LocalKeyValueService"],"mappings":"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"}
|