@wavemaker/app-ng-runtime 11.10.5-rc.6096 → 11.11.0-next.27920
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build-task/bundles/index.umd.js +94 -68
- package/build-task/esm2022/advanced/carousel/carousel-template/carousel-template.build.mjs +8 -8
- package/build-task/esm2022/containers/repeat-template.build.mjs +5 -5
- package/build-task/esm2022/containers/wizard/wizard-step/wizard-step.build.mjs +2 -2
- package/build-task/esm2022/containers/wizard/wizard.build.mjs +33 -4
- package/build-task/esm2022/data/form/form-field/form-field.build.mjs +10 -10
- package/build-task/esm2022/data/table/table-column/table-column.build.mjs +15 -11
- package/build-task/esm2022/page/page.build.mjs +2 -8
- package/build-task/esm2022/public_api.mjs +1 -1
- package/build-task/fesm2022/index.mjs +95 -69
- package/build-task/fesm2022/index.mjs.map +1 -1
- package/components/advanced/carousel/bundles/index.umd.js +8 -36
- package/components/advanced/carousel/carousel-template/carousel-template.directive.d.ts +1 -1
- package/components/advanced/carousel/carousel.directive.d.ts +1 -1
- package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +3 -2
- package/components/advanced/carousel/esm2022/carousel.directive.mjs +3 -2
- package/components/advanced/carousel/esm2022/public_api.mjs +1 -2
- package/components/advanced/carousel/fesm2022/index.mjs +8 -36
- package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- package/components/advanced/carousel/public_api.d.ts +0 -1
- package/components/advanced/custom/bundles/index.umd.js +8 -33
- package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +1 -1
- package/components/advanced/custom/custom-widget.directive.d.ts +1 -1
- package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +3 -2
- package/components/advanced/custom/esm2022/custom-widget.directive.mjs +3 -2
- package/components/advanced/custom/esm2022/public_api.mjs +1 -2
- package/components/advanced/custom/fesm2022/index.mjs +7 -32
- package/components/advanced/custom/fesm2022/index.mjs.map +1 -1
- package/components/advanced/custom/public_api.d.ts +0 -1
- package/components/advanced/login/bundles/index.umd.js +10 -34
- package/components/advanced/login/esm2022/login.component.mjs +7 -6
- package/components/advanced/login/esm2022/public_api.mjs +1 -2
- package/components/advanced/login/fesm2022/index.mjs +8 -32
- package/components/advanced/login/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/login.component.d.ts +1 -1
- package/components/advanced/login/public_api.d.ts +0 -1
- package/components/advanced/marquee/bundles/index.umd.js +6 -29
- package/components/advanced/marquee/esm2022/marquee.directive.mjs +3 -2
- package/components/advanced/marquee/esm2022/public_api.mjs +1 -2
- package/components/advanced/marquee/fesm2022/index.mjs +5 -28
- package/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
- package/components/advanced/marquee/marquee.directive.d.ts +1 -1
- package/components/advanced/marquee/public_api.d.ts +0 -1
- package/components/base/bundles/index.umd.js +76 -274
- package/components/base/components.module.d.ts +13 -15
- package/components/base/directives/show-in-device.directive.d.ts +1 -1
- package/components/base/esm2022/components.module.mjs +7 -13
- package/components/base/esm2022/directives/show-in-device.directive.mjs +3 -2
- package/components/base/esm2022/pipes/custom-pipes.mjs +32 -16
- package/components/base/esm2022/pipes/image.pipe.mjs +3 -2
- package/components/base/esm2022/pipes/sanitize.pipe.mjs +3 -2
- package/components/base/esm2022/pipes/trust-as.pipe.mjs +3 -2
- package/components/base/esm2022/public_api.mjs +1 -2
- package/components/base/esm2022/utils/form-utils.mjs +2 -1
- package/components/base/esm2022/utils/live-utils.mjs +3 -7
- package/components/base/esm2022/widgets/common/base/base.component.mjs +3 -5
- package/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/base/partial-container.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/base/text-content.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/container/container.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/dialog/dialog.service.mjs +3 -3
- package/components/base/esm2022/widgets/common/item-template/item-template.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/lazy-load/lazy-load.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/message/message.component.mjs +5 -5
- package/components/base/esm2022/widgets/common/partial/partial.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/partial-param/partial-param.directive.mjs +5 -3
- package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +3 -2
- package/components/base/esm2022/widgets/common/repeat-template/repeat-template.directive.mjs +3 -2
- package/components/base/fesm2022/index.mjs +76 -272
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +16 -16
- package/components/base/pipes/image.pipe.d.ts +1 -1
- package/components/base/pipes/sanitize.pipe.d.ts +1 -1
- package/components/base/pipes/trust-as.pipe.d.ts +1 -1
- package/components/base/public_api.d.ts +0 -1
- package/components/base/widgets/common/base/custom-widget-container.directive.d.ts +1 -1
- package/components/base/widgets/common/base/partial-container.directive.d.ts +1 -1
- package/components/base/widgets/common/base/text-content.directive.d.ts +1 -1
- package/components/base/widgets/common/container/container.directive.d.ts +1 -1
- package/components/base/widgets/common/item-template/item-template.directive.d.ts +1 -1
- package/components/base/widgets/common/lazy-load/lazy-load.directive.d.ts +1 -1
- package/components/base/widgets/common/message/message.component.d.ts +1 -1
- package/components/base/widgets/common/partial/partial.directive.d.ts +1 -1
- package/components/base/widgets/common/partial-param/partial-param.directive.d.ts +2 -2
- package/components/base/widgets/common/redraw/redrawable.directive.d.ts +1 -1
- package/components/base/widgets/common/repeat-template/repeat-template.directive.d.ts +1 -1
- package/components/basic/default/anchor/anchor.component.d.ts +1 -1
- package/components/basic/default/audio/audio.component.d.ts +1 -1
- package/components/basic/default/bundles/index.umd.js +100 -148
- package/components/basic/default/esm2022/anchor/anchor.component.mjs +23 -21
- package/components/basic/default/esm2022/audio/audio.component.mjs +7 -6
- package/components/basic/default/esm2022/html/html.directive.mjs +3 -2
- package/components/basic/default/esm2022/icon/icon.component.mjs +17 -16
- package/components/basic/default/esm2022/iframe/iframe.component.mjs +14 -13
- package/components/basic/default/esm2022/label/label.directive.mjs +3 -2
- package/components/basic/default/esm2022/picture/picture.directive.mjs +3 -2
- package/components/basic/default/esm2022/picture/picture.props.mjs +1 -5
- package/components/basic/default/esm2022/public_api.mjs +1 -2
- package/components/basic/default/esm2022/spinner/spinner.component.mjs +26 -24
- package/components/basic/default/esm2022/video/video.component.mjs +19 -18
- package/components/basic/default/fesm2022/index.mjs +101 -148
- package/components/basic/default/fesm2022/index.mjs.map +1 -1
- package/components/basic/default/html/html.directive.d.ts +1 -1
- package/components/basic/default/icon/icon.component.d.ts +1 -1
- package/components/basic/default/iframe/iframe.component.d.ts +1 -1
- package/components/basic/default/label/label.directive.d.ts +1 -1
- package/components/basic/default/picture/picture.directive.d.ts +1 -1
- package/components/basic/default/public_api.d.ts +0 -1
- package/components/basic/default/spinner/spinner.component.d.ts +1 -1
- package/components/basic/default/video/video.component.d.ts +1 -1
- package/components/basic/progress/bundles/index.umd.js +20 -51
- package/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +12 -11
- package/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
- package/components/basic/progress/esm2022/public_api.mjs +1 -2
- package/components/basic/progress/fesm2022/index.mjs +19 -49
- package/components/basic/progress/fesm2022/index.mjs.map +1 -1
- package/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -1
- package/components/basic/progress/progress-circle/progress-circle.component.d.ts +1 -1
- package/components/basic/progress/public_api.d.ts +0 -1
- package/components/basic/rich-text-editor/bundles/index.umd.js +15 -40
- package/components/basic/rich-text-editor/esm2022/public_api.mjs +1 -2
- package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +13 -12
- package/components/basic/rich-text-editor/fesm2022/index.mjs +13 -37
- package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- package/components/basic/rich-text-editor/public_api.d.ts +0 -1
- package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +1 -1
- package/components/basic/search/bundles/index.umd.js +170 -207
- package/components/basic/search/esm2022/public_api.mjs +1 -2
- package/components/basic/search/esm2022/scrollable.directive.mjs +3 -2
- package/components/basic/search/esm2022/search.component.mjs +76 -72
- package/components/basic/search/fesm2022/index.mjs +107 -143
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/public_api.d.ts +0 -1
- package/components/basic/search/scrollable.directive.d.ts +1 -1
- package/components/basic/search/search.component.d.ts +1 -1
- package/components/basic/tree/bundles/index.umd.js +9 -33
- package/components/basic/tree/esm2022/public_api.mjs +1 -2
- package/components/basic/tree/esm2022/tree.component.mjs +7 -6
- package/components/basic/tree/fesm2022/index.mjs +8 -32
- package/components/basic/tree/fesm2022/index.mjs.map +1 -1
- package/components/basic/tree/public_api.d.ts +0 -1
- package/components/basic/tree/tree.component.d.ts +1 -1
- package/components/chart/bundles/index.umd.js +25 -53
- package/components/chart/chart.component.d.ts +1 -1
- package/components/chart/esm2022/chart.component.mjs +26 -24
- package/components/chart/esm2022/chart.utils.mjs +2 -1
- package/components/chart/esm2022/public_api.mjs +1 -2
- package/components/chart/fesm2022/index.mjs +26 -52
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/chart/public_api.d.ts +0 -1
- package/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -1
- package/components/containers/accordion/accordion.directive.d.ts +1 -1
- package/components/containers/accordion/bundles/index.umd.js +208 -237
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +10 -11
- package/components/containers/accordion/esm2022/accordion.directive.mjs +5 -4
- package/components/containers/accordion/esm2022/public_api.mjs +1 -2
- package/components/containers/accordion/fesm2022/index.mjs +189 -217
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- package/components/containers/accordion/public_api.d.ts +0 -1
- package/components/containers/layout-grid/bundles/index.umd.js +13 -43
- package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +7 -9
- package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +3 -2
- package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +3 -2
- package/components/containers/layout-grid/esm2022/public_api.mjs +1 -2
- package/components/containers/layout-grid/fesm2022/index.mjs +13 -43
- package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
- package/components/containers/layout-grid/layout-grid-column/layout-grid-column.directive.d.ts +1 -1
- package/components/containers/layout-grid/layout-grid-row/layout-grid-row.directive.d.ts +1 -1
- package/components/containers/layout-grid/layout-grid.directive.d.ts +1 -1
- package/components/containers/layout-grid/public_api.d.ts +0 -1
- package/components/containers/linear-layout/bundles/index.umd.js +8 -33
- package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +3 -2
- package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +3 -2
- package/components/containers/linear-layout/esm2022/public_api.mjs +1 -2
- package/components/containers/linear-layout/fesm2022/index.mjs +7 -32
- package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
- package/components/containers/linear-layout/linear-layout-item/linear-layout-item.directive.d.ts +1 -1
- package/components/containers/linear-layout/linear-layout.directive.d.ts +1 -1
- package/components/containers/linear-layout/public_api.d.ts +0 -1
- package/components/containers/panel/bundles/index.umd.js +87 -118
- package/components/containers/panel/esm2022/panel.component.mjs +48 -46
- package/components/containers/panel/esm2022/public_api.mjs +1 -2
- package/components/containers/panel/fesm2022/index.mjs +49 -79
- package/components/containers/panel/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/panel.component.d.ts +1 -1
- package/components/containers/panel/public_api.d.ts +0 -1
- package/components/containers/tabs/bundles/index.umd.js +84 -116
- package/components/containers/tabs/esm2022/public_api.mjs +1 -2
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +8 -10
- package/components/containers/tabs/esm2022/tabs.component.mjs +35 -33
- package/components/containers/tabs/esm2022/tabs.props.mjs +1 -5
- package/components/containers/tabs/fesm2022/index.mjs +45 -76
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/public_api.d.ts +0 -1
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +1 -1
- package/components/containers/tabs/tabs.component.d.ts +1 -1
- package/components/containers/tile/bundles/index.umd.js +6 -29
- package/components/containers/tile/esm2022/public_api.mjs +1 -2
- package/components/containers/tile/esm2022/tile.directive.mjs +3 -2
- package/components/containers/tile/fesm2022/index.mjs +5 -28
- package/components/containers/tile/fesm2022/index.mjs.map +1 -1
- package/components/containers/tile/public_api.d.ts +0 -1
- package/components/containers/tile/tile.directive.d.ts +1 -1
- package/components/containers/wizard/bundles/index.umd.js +355 -186
- package/components/containers/wizard/esm2022/public_api.mjs +2 -3
- package/components/containers/wizard/esm2022/wizard-action/wizard-action.directive.mjs +3 -2
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +176 -0
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.props.mjs +8 -5
- package/components/containers/wizard/esm2022/wizard.component.mjs +264 -102
- package/components/containers/wizard/esm2022/wizard.props.mjs +8 -4
- package/components/containers/wizard/fesm2022/index.mjs +323 -152
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/public_api.d.ts +1 -2
- package/components/containers/wizard/wizard-action/wizard-action.directive.d.ts +1 -1
- package/components/containers/wizard/wizard-step/{wizard-step.directive.d.ts → wizard-step.component.d.ts} +12 -6
- package/components/containers/wizard/wizard.component.d.ts +64 -18
- package/components/data/card/bundles/index.umd.js +92 -135
- package/components/data/card/card-actions/card-actions.directive.d.ts +1 -1
- package/components/data/card/card-content/card-content.component.d.ts +1 -1
- package/components/data/card/card-footer/card-footer.directive.d.ts +1 -1
- package/components/data/card/card.component.d.ts +1 -1
- package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +3 -2
- package/components/data/card/esm2022/card-content/card-content.component.mjs +7 -6
- package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +3 -2
- package/components/data/card/esm2022/card.component.mjs +39 -38
- package/components/data/card/esm2022/public_api.mjs +1 -2
- package/components/data/card/fesm2022/index.mjs +49 -92
- package/components/data/card/fesm2022/index.mjs.map +1 -1
- package/components/data/card/public_api.d.ts +0 -1
- package/components/data/form/bundles/index.umd.js +115 -182
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +3 -2
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +3 -2
- package/components/data/form/esm2022/form-widget.directive.mjs +3 -2
- package/components/data/form/esm2022/form.component.mjs +101 -104
- package/components/data/form/esm2022/form.props.mjs +1 -11
- package/components/data/form/esm2022/live-actions/dependson.directive.mjs +3 -2
- package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +3 -2
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +3 -2
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +3 -6
- package/components/data/form/esm2022/public_api.mjs +1 -2
- package/components/data/form/fesm2022/index.mjs +117 -184
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/form-action/form-action.directive.d.ts +1 -1
- package/components/data/form/form-field/form-field.directive.d.ts +1 -1
- package/components/data/form/form-widget.directive.d.ts +1 -1
- package/components/data/form/form.component.d.ts +1 -1
- package/components/data/form/live-actions/dependson.directive.d.ts +1 -1
- package/components/data/form/live-actions/live-actions.directive.d.ts +1 -1
- package/components/data/form/live-filter/live-filter.directive.d.ts +1 -1
- package/components/data/form/live-form/live-form.directive.d.ts +1 -1
- package/components/data/form/public_api.d.ts +0 -1
- package/components/data/list/bundles/index.umd.js +195 -504
- package/components/data/list/esm2022/list-item.directive.mjs +4 -3
- package/components/data/list/esm2022/list.component.mjs +187 -232
- package/components/data/list/esm2022/list.props.mjs +2 -3
- package/components/data/list/esm2022/public_api.mjs +1 -2
- package/components/data/list/fesm2022/index.mjs +193 -502
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/list/list-item.directive.d.ts +1 -1
- package/components/data/list/list.component.d.ts +1 -1
- package/components/data/list/public_api.d.ts +0 -1
- package/components/data/live-table/bundles/index.umd.js +9 -33
- package/components/data/live-table/esm2022/live-table.component.mjs +7 -6
- package/components/data/live-table/esm2022/public_api.mjs +1 -2
- package/components/data/live-table/fesm2022/index.mjs +8 -32
- package/components/data/live-table/fesm2022/index.mjs.map +1 -1
- package/components/data/live-table/live-table.component.d.ts +1 -1
- package/components/data/live-table/public_api.d.ts +0 -1
- package/components/data/pagination/bundles/index.umd.js +80 -110
- package/components/data/pagination/esm2022/pagination.component.mjs +80 -76
- package/components/data/pagination/esm2022/public_api.mjs +1 -2
- package/components/data/pagination/fesm2022/index.mjs +81 -110
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/pagination.component.d.ts +1 -1
- package/components/data/pagination/public_api.d.ts +0 -1
- package/components/data/table/bundles/index.umd.js +66 -135
- package/components/data/table/esm2022/public_api.mjs +1 -2
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +3 -2
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +3 -2
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +3 -2
- package/components/data/table/esm2022/table-cud.directive.mjs +3 -2
- package/components/data/table/esm2022/table-filter.directive.mjs +4 -2
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +3 -2
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +3 -2
- package/components/data/table/esm2022/table.component.mjs +50 -49
- package/components/data/table/fesm2022/index.mjs +70 -140
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/public_api.d.ts +0 -1
- package/components/data/table/table-action/table-action.directive.d.ts +1 -1
- package/components/data/table/table-column/table-column.directive.d.ts +1 -1
- package/components/data/table/table-column-group/table-column-group.directive.d.ts +1 -1
- package/components/data/table/table-cud.directive.d.ts +1 -1
- package/components/data/table/table-filter.directive.d.ts +1 -1
- package/components/data/table/table-row/table-row.directive.d.ts +1 -1
- package/components/data/table/table-row-action/table-row-action.directive.d.ts +1 -1
- package/components/data/table/table.component.d.ts +1 -1
- package/components/dialogs/alert-dialog/alert-dialog.component.d.ts +1 -1
- package/components/dialogs/alert-dialog/bundles/index.umd.js +32 -64
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +10 -10
- package/components/dialogs/alert-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +11 -43
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/alert-dialog/public_api.d.ts +0 -1
- package/components/dialogs/confirm-dialog/bundles/index.umd.js +10 -42
- package/components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +1 -1
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -9
- package/components/dialogs/confirm-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs +10 -42
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/confirm-dialog/public_api.d.ts +0 -1
- package/components/dialogs/default/bundles/index.umd.js +76 -136
- package/components/dialogs/default/dialog-body/dialog-body.directive.d.ts +1 -1
- package/components/dialogs/default/dialog-footer/dialog-footer.directive.d.ts +1 -1
- package/components/dialogs/default/dialog-header/dialog-header.component.d.ts +1 -1
- package/components/dialogs/default/esm2022/base-dialog.mjs +3 -3
- package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +3 -2
- package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +3 -2
- package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +70 -97
- package/components/dialogs/default/esm2022/public_api.mjs +1 -2
- package/components/dialogs/default/fesm2022/index.mjs +78 -137
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/default/public_api.d.ts +0 -1
- package/components/dialogs/design-dialog/bundles/index.umd.js +16 -47
- package/components/dialogs/design-dialog/dialog.component.d.ts +1 -1
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +14 -13
- package/components/dialogs/design-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/design-dialog/fesm2022/index.mjs +14 -45
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/design-dialog/public_api.d.ts +0 -1
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +20 -57
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +21 -21
- package/components/dialogs/iframe-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +21 -57
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/iframe-dialog.component.d.ts +1 -1
- package/components/dialogs/iframe-dialog/public_api.d.ts +0 -1
- package/components/dialogs/login-dialog/bundles/index.umd.js +6 -38
- package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +3 -2
- package/components/dialogs/login-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/login-dialog/fesm2022/index.mjs +6 -41
- package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/login-dialog/login-dialog.directive.d.ts +1 -1
- package/components/dialogs/login-dialog/public_api.d.ts +0 -1
- package/components/dialogs/partial-dialog/bundles/index.umd.js +17 -49
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +16 -15
- package/components/dialogs/partial-dialog/esm2022/public_api.mjs +1 -2
- package/components/dialogs/partial-dialog/fesm2022/index.mjs +16 -47
- package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/partial-dialog/partial-dialog.component.d.ts +1 -1
- package/components/dialogs/partial-dialog/public_api.d.ts +0 -1
- package/components/input/calendar/bundles/index.umd.js +19 -46
- package/components/input/calendar/calendar.component.d.ts +1 -1
- package/components/input/calendar/esm2022/calendar.component.mjs +24 -10
- package/components/input/calendar/esm2022/calendar.props.mjs +1 -1
- package/components/input/calendar/esm2022/public_api.mjs +1 -2
- package/components/input/calendar/fesm2022/index.mjs +26 -48
- package/components/input/calendar/fesm2022/index.mjs.map +1 -1
- package/components/input/calendar/public_api.d.ts +0 -1
- package/components/input/chips/bundles/index.umd.js +86 -114
- package/components/input/chips/chips.component.d.ts +1 -1
- package/components/input/chips/esm2022/chips.component.mjs +28 -27
- package/components/input/chips/esm2022/public_api.mjs +1 -2
- package/components/input/chips/fesm2022/index.mjs +29 -56
- package/components/input/chips/fesm2022/index.mjs.map +1 -1
- package/components/input/chips/public_api.d.ts +0 -1
- package/components/input/color-picker/bundles/index.umd.js +10 -40
- package/components/input/color-picker/color-picker.component.d.ts +1 -1
- package/components/input/color-picker/esm2022/color-picker.component.mjs +10 -6
- package/components/input/color-picker/esm2022/public_api.mjs +1 -2
- package/components/input/color-picker/fesm2022/index.mjs +11 -40
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- package/components/input/color-picker/public_api.d.ts +0 -1
- package/components/input/currency/bundles/index.umd.js +11 -41
- package/components/input/currency/currency.component.d.ts +1 -1
- package/components/input/currency/esm2022/currency.component.mjs +8 -6
- package/components/input/currency/esm2022/public_api.mjs +1 -2
- package/components/input/currency/fesm2022/index.mjs +11 -41
- package/components/input/currency/fesm2022/index.mjs.map +1 -1
- package/components/input/currency/public_api.d.ts +0 -1
- package/components/input/default/bundles/index.umd.js +2183 -2263
- package/components/input/default/button/button.component.d.ts +1 -1
- package/components/input/default/button-group/button-group.directive.d.ts +1 -1
- package/components/input/default/caption-position.directive.d.ts +1 -1
- package/components/input/default/checkbox/checkbox.component.d.ts +1 -1
- package/components/input/default/checkboxset/checkboxset.component.d.ts +1 -1
- package/components/input/default/composite/composite.directive.d.ts +1 -1
- package/components/input/default/esm2022/button/button.component.mjs +23 -21
- package/components/input/default/esm2022/button-group/button-group.directive.mjs +3 -2
- package/components/input/default/esm2022/caption-position.directive.mjs +3 -2
- package/components/input/default/esm2022/checkbox/checkbox.component.mjs +9 -6
- package/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +73 -72
- package/components/input/default/esm2022/composite/composite.directive.mjs +3 -2
- package/components/input/default/esm2022/number/number.component.mjs +9 -6
- package/components/input/default/esm2022/public_api.mjs +1 -2
- package/components/input/default/esm2022/radioset/radioset.component.mjs +73 -72
- package/components/input/default/esm2022/select/select.component.mjs +29 -32
- package/components/input/default/esm2022/switch/switch.component.mjs +29 -27
- package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +9 -6
- package/components/input/default/esm2022/text/color/input-color.component.mjs +9 -6
- package/components/input/default/esm2022/text/email/input-email.component.mjs +9 -6
- package/components/input/default/esm2022/text/number/input-number.component.mjs +9 -6
- package/components/input/default/esm2022/text/text/input-text.component.mjs +10 -6
- package/components/input/default/esm2022/textarea/textarea.component.mjs +14 -11
- package/components/input/default/fesm2022/index.mjs +2198 -2277
- package/components/input/default/fesm2022/index.mjs.map +1 -1
- package/components/input/default/number/number.component.d.ts +1 -1
- package/components/input/default/public_api.d.ts +0 -1
- package/components/input/default/radioset/radioset.component.d.ts +1 -1
- package/components/input/default/select/select.component.d.ts +1 -1
- package/components/input/default/switch/switch.component.d.ts +1 -1
- package/components/input/default/text/calendar/input-calendar.component.d.ts +1 -1
- package/components/input/default/text/color/input-color.component.d.ts +1 -1
- package/components/input/default/text/email/input-email.component.d.ts +1 -1
- package/components/input/default/text/number/input-number.component.d.ts +1 -1
- package/components/input/default/text/text/input-text.component.d.ts +1 -1
- package/components/input/default/textarea/textarea.component.d.ts +1 -1
- package/components/input/epoch/base-date-time.component.d.ts +0 -1
- package/components/input/epoch/bundles/index.umd.js +181 -229
- package/components/input/epoch/date/date.component.d.ts +1 -1
- package/components/input/epoch/date/imaskUtil.d.ts +2 -2
- package/components/input/epoch/date-time/date-time-picker.component.d.ts +6 -6
- package/components/input/epoch/date-time/date-time.component.d.ts +1 -1
- package/components/input/epoch/esm2022/base-date-time.component.mjs +5 -9
- package/components/input/epoch/esm2022/date/date.component.mjs +19 -18
- package/components/input/epoch/esm2022/date/imaskUtil.mjs +2 -1
- package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +75 -62
- package/components/input/epoch/esm2022/date-time/date-time.component.mjs +27 -24
- package/components/input/epoch/esm2022/picker/picker.component.mjs +33 -28
- package/components/input/epoch/esm2022/public_api.mjs +1 -2
- package/components/input/epoch/esm2022/time/time.component.mjs +24 -21
- package/components/input/epoch/fesm2022/index.mjs +158 -204
- package/components/input/epoch/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/picker/picker.component.d.ts +2 -2
- package/components/input/epoch/public_api.d.ts +0 -1
- package/components/input/epoch/time/time.component.d.ts +1 -1
- package/components/input/file-upload/bundles/index.umd.js +135 -178
- package/components/input/file-upload/esm2022/file-upload.component.mjs +133 -150
- package/components/input/file-upload/esm2022/public_api.mjs +1 -2
- package/components/input/file-upload/fesm2022/index.mjs +133 -175
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/file-upload.component.d.ts +1 -2
- package/components/input/file-upload/public_api.d.ts +0 -1
- package/components/input/rating/bundles/index.umd.js +50 -77
- package/components/input/rating/esm2022/public_api.mjs +1 -2
- package/components/input/rating/esm2022/rating.component.mjs +23 -20
- package/components/input/rating/fesm2022/index.mjs +23 -49
- package/components/input/rating/fesm2022/index.mjs.map +1 -1
- package/components/input/rating/public_api.d.ts +0 -1
- package/components/input/rating/rating.component.d.ts +1 -1
- package/components/input/slider/bundles/index.umd.js +35 -63
- package/components/input/slider/esm2022/public_api.mjs +1 -2
- package/components/input/slider/esm2022/slider.component.mjs +15 -13
- package/components/input/slider/fesm2022/index.mjs +15 -42
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/public_api.d.ts +0 -1
- package/components/input/slider/slider.component.d.ts +1 -1
- package/components/navigation/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/components/navigation/breadcrumb/bundles/index.umd.js +40 -67
- package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +23 -21
- package/components/navigation/breadcrumb/esm2022/public_api.mjs +1 -2
- package/components/navigation/breadcrumb/fesm2022/index.mjs +23 -50
- package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- package/components/navigation/breadcrumb/public_api.d.ts +0 -1
- package/components/navigation/menu/bundles/index.umd.js +642 -696
- package/components/navigation/menu/esm2022/menu-adapator.component.mjs +1 -1
- package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +11 -9
- package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +24 -18
- package/components/navigation/menu/esm2022/menu.component.mjs +34 -31
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +3 -2
- package/components/navigation/menu/esm2022/nav/nav.component.mjs +39 -29
- package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +6 -3
- package/components/navigation/menu/esm2022/public_api.mjs +1 -2
- package/components/navigation/menu/fesm2022/index.mjs +534 -587
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +1 -1
- package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +1 -1
- package/components/navigation/menu/menu.component.d.ts +1 -1
- package/components/navigation/menu/nav/nav-item/nav-item.directive.d.ts +1 -1
- package/components/navigation/menu/nav/nav.component.d.ts +1 -1
- package/components/navigation/menu/nav/navigation-control.directive.d.ts +1 -1
- package/components/navigation/menu/public_api.d.ts +0 -1
- package/components/navigation/navbar/bundles/index.umd.js +20 -44
- package/components/navigation/navbar/esm2022/navbar.component.mjs +18 -16
- package/components/navigation/navbar/esm2022/public_api.mjs +1 -2
- package/components/navigation/navbar/fesm2022/index.mjs +18 -41
- package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- package/components/navigation/navbar/navbar.component.d.ts +1 -1
- package/components/navigation/navbar/public_api.d.ts +0 -1
- package/components/navigation/popover/bundles/index.umd.js +12 -43
- package/components/navigation/popover/esm2022/popover.component.mjs +11 -9
- package/components/navigation/popover/esm2022/public_api.mjs +1 -2
- package/components/navigation/popover/fesm2022/index.mjs +11 -41
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/popover.component.d.ts +1 -1
- package/components/navigation/popover/public_api.d.ts +0 -1
- package/components/page/default/bundles/index.umd.js +96 -138
- package/components/page/default/content/content.component.d.ts +1 -1
- package/components/page/default/esm2022/content/content.component.mjs +7 -6
- package/components/page/default/esm2022/layout.directive.mjs +3 -2
- package/components/page/default/esm2022/page-content/page-content.component.mjs +7 -6
- package/components/page/default/esm2022/page-content/page-content.props.mjs +2 -3
- package/components/page/default/esm2022/page.directive.mjs +3 -2
- package/components/page/default/esm2022/public_api.mjs +1 -2
- package/components/page/default/esm2022/router-outlet.directive.mjs +3 -2
- package/components/page/default/esm2022/spa-page.directive.mjs +3 -2
- package/components/page/default/fesm2022/index.mjs +96 -138
- package/components/page/default/fesm2022/index.mjs.map +1 -1
- package/components/page/default/layout.directive.d.ts +1 -1
- package/components/page/default/page-content/page-content.component.d.ts +1 -1
- package/components/page/default/page.directive.d.ts +1 -1
- package/components/page/default/public_api.d.ts +0 -1
- package/components/page/default/router-outlet.directive.d.ts +1 -1
- package/components/page/default/spa-page.directive.d.ts +1 -1
- package/components/page/footer/bundles/index.umd.js +6 -29
- package/components/page/footer/esm2022/footer.directive.mjs +3 -2
- package/components/page/footer/esm2022/public_api.mjs +1 -2
- package/components/page/footer/fesm2022/index.mjs +5 -28
- package/components/page/footer/fesm2022/index.mjs.map +1 -1
- package/components/page/footer/footer.directive.d.ts +1 -1
- package/components/page/footer/public_api.d.ts +0 -1
- package/components/page/header/bundles/index.umd.js +9 -33
- package/components/page/header/esm2022/header.component.mjs +7 -6
- package/components/page/header/esm2022/public_api.mjs +1 -2
- package/components/page/header/fesm2022/index.mjs +8 -32
- package/components/page/header/fesm2022/index.mjs.map +1 -1
- package/components/page/header/header.component.d.ts +1 -1
- package/components/page/header/public_api.d.ts +0 -1
- package/components/page/left-panel/bundles/index.umd.js +6 -29
- package/components/page/left-panel/esm2022/left-panel.directive.mjs +3 -2
- package/components/page/left-panel/esm2022/public_api.mjs +1 -2
- package/components/page/left-panel/fesm2022/index.mjs +5 -28
- package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/left-panel/left-panel.directive.d.ts +1 -1
- package/components/page/left-panel/public_api.d.ts +0 -1
- package/components/page/right-panel/bundles/index.umd.js +6 -29
- package/components/page/right-panel/esm2022/public_api.mjs +1 -2
- package/components/page/right-panel/esm2022/right-panel.directive.mjs +3 -2
- package/components/page/right-panel/fesm2022/index.mjs +5 -28
- package/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/right-panel/public_api.d.ts +0 -1
- package/components/page/right-panel/right-panel.directive.d.ts +1 -1
- package/components/page/top-nav/bundles/index.umd.js +6 -29
- package/components/page/top-nav/esm2022/public_api.mjs +1 -2
- package/components/page/top-nav/esm2022/top-nav.directive.mjs +3 -2
- package/components/page/top-nav/fesm2022/index.mjs +5 -28
- package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- package/components/page/top-nav/public_api.d.ts +0 -1
- package/components/page/top-nav/top-nav.directive.d.ts +1 -1
- package/components/prefab/bundles/index.umd.js +8 -33
- package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +3 -2
- package/components/prefab/esm2022/prefab.directive.mjs +3 -2
- package/components/prefab/esm2022/public_api.mjs +1 -2
- package/components/prefab/fesm2022/index.mjs +7 -32
- package/components/prefab/fesm2022/index.mjs.map +1 -1
- package/components/prefab/prefab-container/prefab-container.directive.d.ts +1 -1
- package/components/prefab/prefab.directive.d.ts +1 -1
- package/components/prefab/public_api.d.ts +0 -1
- package/core/bundles/index.umd.js +30 -85
- package/core/esm2022/public_api.mjs +2 -3
- package/core/esm2022/utils/build-utils.mjs +9 -5
- package/core/esm2022/utils/utils.mjs +11 -40
- package/core/fesm2022/index.mjs +31 -81
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/public_api.d.ts +1 -2
- package/core/utils/utils.d.ts +1 -3
- package/http/bundles/index.umd.js +9 -34
- package/http/esm2022/http.service.mjs +6 -3
- package/http/esm2022/public_api.mjs +4 -2
- package/http/fesm2022/index.mjs +9 -34
- package/http/fesm2022/index.mjs.map +1 -1
- package/http/public_api.d.ts +3 -1
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/bundles/index.umd.js +7 -42
- package/oAuth/esm2022/oAuth.utils.mjs +6 -23
- package/oAuth/esm2022/public_api.mjs +1 -2
- package/oAuth/fesm2022/index.mjs +7 -40
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/oAuth/public_api.d.ts +0 -1
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +681 -596
- package/runtime/base/components/app-component/app.component.d.ts +1 -1
- package/runtime/base/components/app-spinner.component.d.ts +1 -1
- package/runtime/base/components/custom-toaster.component.d.ts +1 -1
- package/runtime/base/components/empty-component/empty-page.component.d.ts +1 -1
- package/runtime/base/components/prefab-preview.component.d.ts +1 -1
- package/runtime/base/directives/accessroles.directive.d.ts +1 -1
- package/runtime/base/directives/prefab.directive.d.ts +1 -1
- package/runtime/base/esm2022/components/app-component/app.component.mjs +42 -49
- package/runtime/base/esm2022/components/app-spinner.component.mjs +29 -21
- package/runtime/base/esm2022/components/base-page.component.mjs +3 -11
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +3 -11
- package/runtime/base/esm2022/components/custom-toaster.component.mjs +20 -14
- package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +4 -3
- package/runtime/base/esm2022/components/prefab-preview.component.mjs +8 -6
- package/runtime/base/esm2022/directives/accessroles.directive.mjs +3 -2
- package/runtime/base/esm2022/directives/prefab.directive.mjs +3 -2
- package/runtime/base/esm2022/public_api.mjs +1 -1
- package/runtime/base/esm2022/resolves/security-config.resolve.mjs +4 -6
- package/runtime/base/esm2022/runtime-base.module.mjs +486 -337
- package/runtime/base/esm2022/services/app.manager.service.mjs +31 -48
- package/runtime/base/esm2022/services/i18n.service.mjs +37 -72
- package/runtime/base/fesm2022/index.mjs +689 -605
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/runtime-base.module.d.ts +115 -84
- package/runtime/base/services/i18n.service.d.ts +1 -1
- package/runtime/dynamic/app/components/page-wrapper.component.d.ts +1 -1
- package/runtime/dynamic/bundles/index.umd.js +113 -69
- package/runtime/dynamic/esm2022/app/app.module.mjs +151 -105
- package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +7 -4
- package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +4 -2
- package/runtime/dynamic/esm2022/main.mjs +2 -7
- package/runtime/dynamic/fesm2022/index.mjs +159 -114
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/security/bundles/index.umd.js +3 -34
- package/security/esm2022/public_api.mjs +1 -2
- package/security/esm2022/security.service.mjs +4 -15
- package/security/fesm2022/index.mjs +5 -32
- package/security/fesm2022/index.mjs.map +1 -1
- package/security/public_api.d.ts +0 -1
- package/transpiler/bundles/index.umd.js +271 -168
- package/transpiler/esm2022/build.mjs +1 -6
- package/transpiler/esm2022/imports.mjs +268 -161
- package/transpiler/fesm2022/index.mjs +267 -165
- package/transpiler/fesm2022/index.mjs.map +1 -1
- package/variables/bundles/index.umd.js +14 -198
- package/variables/constants/variables.constants.d.ts +0 -2
- package/variables/esm2022/constants/variables.constants.mjs +1 -3
- package/variables/esm2022/factory/variable-manager.factory.mjs +1 -3
- package/variables/esm2022/factory/variable.factory.mjs +1 -5
- package/variables/esm2022/manager/action/logout-action.manager.mjs +5 -7
- package/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +3 -3
- package/variables/esm2022/public_api.mjs +1 -5
- package/variables/esm2022/service/metadata-service/metadata.service.mjs +6 -11
- package/variables/esm2022/util/variable/service-variable.utils.mjs +1 -4
- package/variables/esm2022/util/variable/variables.utils.mjs +4 -19
- package/variables/fesm2022/index.mjs +15 -198
- package/variables/fesm2022/index.mjs.map +1 -1
- package/variables/public_api.d.ts +0 -4
- package/components/advanced/carousel/carousel.module.d.ts +0 -11
- package/components/advanced/carousel/esm2022/carousel.module.mjs +0 -36
- package/components/advanced/custom/custom-widget.module.d.ts +0 -10
- package/components/advanced/custom/esm2022/custom-widget.module.mjs +0 -32
- package/components/advanced/login/esm2022/login.module.mjs +0 -28
- package/components/advanced/login/login.module.d.ts +0 -9
- package/components/advanced/marquee/esm2022/marquee.module.mjs +0 -28
- package/components/advanced/marquee/marquee.module.d.ts +0 -9
- package/components/base/esm2022/widgets/common/smooth-scroll/smooth-scroll.directive.mjs +0 -221
- package/components/base/widgets/common/smooth-scroll/smooth-scroll.directive.d.ts +0 -22
- package/components/basic/default/basic.module.d.ts +0 -17
- package/components/basic/default/esm2022/basic.module.mjs +0 -60
- package/components/basic/progress/esm2022/progress.module.mjs +0 -36
- package/components/basic/progress/progress.module.d.ts +0 -11
- package/components/basic/rich-text-editor/esm2022/rich-text-editor.module.mjs +0 -28
- package/components/basic/rich-text-editor/rich-text-editor.module.d.ts +0 -9
- package/components/basic/search/esm2022/search.module.mjs +0 -45
- package/components/basic/search/search.module.d.ts +0 -12
- package/components/basic/tree/esm2022/tree.module.mjs +0 -28
- package/components/basic/tree/tree.module.d.ts +0 -9
- package/components/chart/chart.module.d.ts +0 -10
- package/components/chart/esm2022/chart.module.mjs +0 -32
- package/components/containers/accordion/accordion.module.d.ts +0 -10
- package/components/containers/accordion/esm2022/accordion.module.mjs +0 -32
- package/components/containers/layout-grid/esm2022/layout-grid.module.mjs +0 -36
- package/components/containers/layout-grid/layout-grid.module.d.ts +0 -11
- package/components/containers/linear-layout/esm2022/linear-layout.module.mjs +0 -32
- package/components/containers/linear-layout/linear-layout.module.d.ts +0 -10
- package/components/containers/panel/esm2022/panel.module.mjs +0 -36
- package/components/containers/panel/panel.module.d.ts +0 -11
- package/components/containers/tabs/esm2022/tabs.module.mjs +0 -32
- package/components/containers/tabs/tabs.module.d.ts +0 -10
- package/components/containers/tile/esm2022/tile.module.mjs +0 -28
- package/components/containers/tile/tile.module.d.ts +0 -9
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +0 -140
- package/components/containers/wizard/esm2022/wizard.module.mjs +0 -40
- package/components/containers/wizard/wizard.module.d.ts +0 -12
- package/components/data/card/card.module.d.ts +0 -15
- package/components/data/card/esm2022/card.module.mjs +0 -52
- package/components/data/form/esm2022/form.module.mjs +0 -68
- package/components/data/form/form.module.d.ts +0 -19
- package/components/data/list/esm2022/list.module.mjs +0 -40
- package/components/data/list/list.module.d.ts +0 -11
- package/components/data/live-table/esm2022/live-table.module.mjs +0 -28
- package/components/data/live-table/live-table.module.d.ts +0 -9
- package/components/data/pagination/esm2022/pagination.module.mjs +0 -36
- package/components/data/pagination/pagination.module.d.ts +0 -11
- package/components/data/table/esm2022/table.module.mjs +0 -91
- package/components/data/table/table.module.d.ts +0 -24
- package/components/dialogs/alert-dialog/alert-dialog.module.d.ts +0 -11
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.module.mjs +0 -36
- package/components/dialogs/confirm-dialog/confirm-dialog.module.d.ts +0 -11
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.module.mjs +0 -36
- package/components/dialogs/default/dialog.module.d.ts +0 -12
- package/components/dialogs/default/esm2022/dialog.module.mjs +0 -40
- package/components/dialogs/design-dialog/design-dialog.module.d.ts +0 -11
- package/components/dialogs/design-dialog/esm2022/design-dialog.module.mjs +0 -36
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.module.mjs +0 -40
- package/components/dialogs/iframe-dialog/iframe-dialog.module.d.ts +0 -12
- package/components/dialogs/login-dialog/esm2022/login-dialog.module.mjs +0 -40
- package/components/dialogs/login-dialog/login-dialog.module.d.ts +0 -12
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.module.mjs +0 -36
- package/components/dialogs/partial-dialog/partial-dialog.module.d.ts +0 -11
- package/components/input/calendar/calendar.module.d.ts +0 -12
- package/components/input/calendar/esm2022/calendar.module.mjs +0 -40
- package/components/input/chips/chips.module.d.ts +0 -10
- package/components/input/chips/esm2022/chips.module.mjs +0 -32
- package/components/input/color-picker/color-picker.module.d.ts +0 -11
- package/components/input/color-picker/esm2022/color-picker.module.mjs +0 -36
- package/components/input/currency/currency.module.d.ts +0 -11
- package/components/input/currency/esm2022/currency.module.mjs +0 -36
- package/components/input/default/esm2022/input.module.mjs +0 -96
- package/components/input/default/input.module.d.ts +0 -26
- package/components/input/epoch/epoch.module.d.ts +0 -18
- package/components/input/epoch/esm2022/epoch.module.mjs +0 -70
- package/components/input/file-upload/esm2022/file-upload.module.mjs +0 -28
- package/components/input/file-upload/file-upload.module.d.ts +0 -9
- package/components/input/rating/esm2022/rating.module.mjs +0 -32
- package/components/input/rating/rating.module.d.ts +0 -10
- package/components/input/slider/esm2022/slider.module.mjs +0 -32
- package/components/input/slider/slider.module.d.ts +0 -10
- package/components/navigation/breadcrumb/breadcrumb.module.d.ts +0 -10
- package/components/navigation/breadcrumb/esm2022/breadcrumb.module.mjs +0 -32
- package/components/navigation/menu/esm2022/menu.module.mjs +0 -71
- package/components/navigation/menu/menu.module.d.ts +0 -17
- package/components/navigation/navbar/esm2022/navbar.module.mjs +0 -28
- package/components/navigation/navbar/navbar.module.d.ts +0 -9
- package/components/navigation/popover/esm2022/popover.module.mjs +0 -36
- package/components/navigation/popover/popover.module.d.ts +0 -11
- package/components/page/default/esm2022/page.module.mjs +0 -55
- package/components/page/default/page.module.d.ts +0 -14
- package/components/page/footer/esm2022/footer.module.mjs +0 -28
- package/components/page/footer/footer.module.d.ts +0 -9
- package/components/page/header/esm2022/header.module.mjs +0 -28
- package/components/page/header/header.module.d.ts +0 -9
- package/components/page/left-panel/esm2022/left-panel.module.mjs +0 -28
- package/components/page/left-panel/left-panel.module.d.ts +0 -9
- package/components/page/right-panel/esm2022/right-panel.module.mjs +0 -28
- package/components/page/right-panel/right-panel.module.d.ts +0 -9
- package/components/page/top-nav/esm2022/top-nav.module.mjs +0 -28
- package/components/page/top-nav/top-nav.module.d.ts +0 -9
- package/components/prefab/esm2022/prefab.module.mjs +0 -32
- package/components/prefab/prefab.module.d.ts +0 -10
- package/core/core.module.d.ts +0 -9
- package/core/esm2022/core.module.mjs +0 -27
- package/http/esm2022/http-service.module.mjs +0 -36
- package/http/http-service.module.d.ts +0 -14
- package/locales/fullcalendar/af.js +0 -27
- package/locales/fullcalendar/ar-dz.js +0 -28
- package/locales/fullcalendar/ar-kw.js +0 -28
- package/locales/fullcalendar/ar-ly.js +0 -28
- package/locales/fullcalendar/ar-ma.js +0 -28
- package/locales/fullcalendar/ar-sa.js +0 -28
- package/locales/fullcalendar/ar-tn.js +0 -28
- package/locales/fullcalendar/ar.js +0 -28
- package/locales/fullcalendar/az.js +0 -29
- package/locales/fullcalendar/bg.js +0 -28
- package/locales/fullcalendar/bs.js +0 -29
- package/locales/fullcalendar/ca.js +0 -27
- package/locales/fullcalendar/cs.js +0 -29
- package/locales/fullcalendar/da.js +0 -27
- package/locales/fullcalendar/de.js +0 -30
- package/locales/fullcalendar/el.js +0 -27
- package/locales/fullcalendar/en-au.js +0 -14
- package/locales/fullcalendar/en-gb.js +0 -14
- package/locales/fullcalendar/en-nz.js +0 -14
- package/locales/fullcalendar/es-us.js +0 -27
- package/locales/fullcalendar/es.js +0 -27
- package/locales/fullcalendar/et.js +0 -29
- package/locales/fullcalendar/eu.js +0 -27
- package/locales/fullcalendar/fa.js +0 -30
- package/locales/fullcalendar/fi.js +0 -27
- package/locales/fullcalendar/fr-ca.js +0 -24
- package/locales/fullcalendar/fr-ch.js +0 -28
- package/locales/fullcalendar/fr.js +0 -28
- package/locales/fullcalendar/gl.js +0 -27
- package/locales/fullcalendar/he.js +0 -24
- package/locales/fullcalendar/hi.js +0 -29
- package/locales/fullcalendar/hr.js +0 -29
- package/locales/fullcalendar/hu.js +0 -27
- package/locales/fullcalendar/id.js +0 -27
- package/locales/fullcalendar/is.js +0 -27
- package/locales/fullcalendar/it.js +0 -29
- package/locales/fullcalendar/ja.js +0 -25
- package/locales/fullcalendar/ka.js +0 -29
- package/locales/fullcalendar/kk.js +0 -29
- package/locales/fullcalendar/ko.js +0 -23
- package/locales/fullcalendar/lb.js +0 -27
- package/locales/fullcalendar/lt.js +0 -27
- package/locales/fullcalendar/lv.js +0 -29
- package/locales/fullcalendar/mk.js +0 -25
- package/locales/fullcalendar/ms.js +0 -29
- package/locales/fullcalendar/nb.js +0 -27
- package/locales/fullcalendar/ne.js +0 -27
- package/locales/fullcalendar/nl.js +0 -27
- package/locales/fullcalendar/nn.js +0 -27
- package/locales/fullcalendar/pl.js +0 -27
- package/locales/fullcalendar/pt-br.js +0 -25
- package/locales/fullcalendar/pt.js +0 -27
- package/locales/fullcalendar/ro.js +0 -29
- package/locales/fullcalendar/ru.js +0 -29
- package/locales/fullcalendar/sk.js +0 -29
- package/locales/fullcalendar/sl.js +0 -27
- package/locales/fullcalendar/sq.js +0 -29
- package/locales/fullcalendar/sr-cyrl.js +0 -29
- package/locales/fullcalendar/sr.js +0 -29
- package/locales/fullcalendar/sv.js +0 -27
- package/locales/fullcalendar/th.js +0 -30
- package/locales/fullcalendar/tr.js +0 -27
- package/locales/fullcalendar/ug.js +0 -17
- package/locales/fullcalendar/uk.js +0 -29
- package/locales/fullcalendar/uz.js +0 -21
- package/locales/fullcalendar/vi.js +0 -29
- package/locales/fullcalendar/zh-cn.js +0 -30
- package/locales/fullcalendar/zh-tw.js +0 -23
- package/mobile/components/basic/default/.npmignore +0 -2
- package/mobile/components/basic/default/anchor/anchor.directive.d.ts +0 -8
- package/mobile/components/basic/default/app-update/app-update.component.d.ts +0 -26
- package/mobile/components/basic/default/basic.module.d.ts +0 -15
- package/mobile/components/basic/default/bundles/index.umd.js +0 -980
- package/mobile/components/basic/default/esm2022/anchor/anchor.directive.mjs +0 -44
- package/mobile/components/basic/default/esm2022/app-update/app-update.component.mjs +0 -116
- package/mobile/components/basic/default/esm2022/basic.module.mjs +0 -52
- package/mobile/components/basic/default/esm2022/file-browser/file-browser.component.mjs +0 -236
- package/mobile/components/basic/default/esm2022/file-browser/file-selector.service.mjs +0 -85
- package/mobile/components/basic/default/esm2022/image-cache/image-cache.directive.mjs +0 -61
- package/mobile/components/basic/default/esm2022/index.mjs +0 -5
- package/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.component.mjs +0 -183
- package/mobile/components/basic/default/esm2022/network-info-toaster/network-info-toaster.props.mjs +0 -5
- package/mobile/components/basic/default/esm2022/process-manager/process-management.service.mjs +0 -47
- package/mobile/components/basic/default/esm2022/process-manager/process-manager.component.mjs +0 -175
- package/mobile/components/basic/default/esm2022/public_api.mjs +0 -10
- package/mobile/components/basic/default/fesm2022/index.mjs +0 -958
- package/mobile/components/basic/default/fesm2022/index.mjs.map +0 -1
- package/mobile/components/basic/default/file-browser/file-browser.component.d.ts +0 -39
- package/mobile/components/basic/default/file-browser/file-selector.service.d.ts +0 -27
- package/mobile/components/basic/default/image-cache/image-cache.directive.d.ts +0 -18
- package/mobile/components/basic/default/index.d.ts +0 -5
- package/mobile/components/basic/default/network-info-toaster/network-info-toaster.component.d.ts +0 -28
- package/mobile/components/basic/default/network-info-toaster/network-info-toaster.props.d.ts +0 -1
- package/mobile/components/basic/default/package.json +0 -23
- package/mobile/components/basic/default/process-manager/process-management.service.d.ts +0 -36
- package/mobile/components/basic/default/process-manager/process-manager.component.d.ts +0 -33
- package/mobile/components/basic/default/public_api.d.ts +0 -9
- package/mobile/components/basic/search/.npmignore +0 -2
- package/mobile/components/basic/search/bundles/index.umd.js +0 -66
- package/mobile/components/basic/search/esm2022/index.mjs +0 -5
- package/mobile/components/basic/search/esm2022/public_api.mjs +0 -3
- package/mobile/components/basic/search/esm2022/search.directive.mjs +0 -17
- package/mobile/components/basic/search/esm2022/search.module.mjs +0 -28
- package/mobile/components/basic/search/fesm2022/index.mjs +0 -49
- package/mobile/components/basic/search/fesm2022/index.mjs.map +0 -1
- package/mobile/components/basic/search/index.d.ts +0 -5
- package/mobile/components/basic/search/package.json +0 -23
- package/mobile/components/basic/search/public_api.d.ts +0 -2
- package/mobile/components/basic/search/search.directive.d.ts +0 -7
- package/mobile/components/basic/search/search.module.d.ts +0 -9
- package/mobile/components/containers/segmented-control/.npmignore +0 -2
- package/mobile/components/containers/segmented-control/bundles/index.umd.js +0 -281
- package/mobile/components/containers/segmented-control/esm2022/index.mjs +0 -5
- package/mobile/components/containers/segmented-control/esm2022/public_api.mjs +0 -4
- package/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.component.mjs +0 -70
- package/mobile/components/containers/segmented-control/esm2022/segment-content/segment-content.props.mjs +0 -14
- package/mobile/components/containers/segmented-control/esm2022/segmented-control.component.mjs +0 -147
- package/mobile/components/containers/segmented-control/esm2022/segmented-control.module.mjs +0 -32
- package/mobile/components/containers/segmented-control/esm2022/segmented-control.props.mjs +0 -9
- package/mobile/components/containers/segmented-control/fesm2022/index.mjs +0 -264
- package/mobile/components/containers/segmented-control/fesm2022/index.mjs.map +0 -1
- package/mobile/components/containers/segmented-control/index.d.ts +0 -5
- package/mobile/components/containers/segmented-control/package.json +0 -23
- package/mobile/components/containers/segmented-control/public_api.d.ts +0 -3
- package/mobile/components/containers/segmented-control/segment-content/segment-content.component.d.ts +0 -18
- package/mobile/components/containers/segmented-control/segment-content/segment-content.props.d.ts +0 -1
- package/mobile/components/containers/segmented-control/segmented-control.component.d.ts +0 -20
- package/mobile/components/containers/segmented-control/segmented-control.module.d.ts +0 -10
- package/mobile/components/containers/segmented-control/segmented-control.props.d.ts +0 -1
- package/mobile/components/data/media-list/.npmignore +0 -2
- package/mobile/components/data/media-list/bundles/index.umd.js +0 -310
- package/mobile/components/data/media-list/esm2022/index.mjs +0 -5
- package/mobile/components/data/media-list/esm2022/media-list-item/media-list-item.directive.mjs +0 -24
- package/mobile/components/data/media-list/esm2022/media-list.component.mjs +0 -213
- package/mobile/components/data/media-list/esm2022/media-list.module.mjs +0 -48
- package/mobile/components/data/media-list/esm2022/media-list.props.mjs +0 -16
- package/mobile/components/data/media-list/esm2022/public_api.mjs +0 -4
- package/mobile/components/data/media-list/fesm2022/index.mjs +0 -297
- package/mobile/components/data/media-list/fesm2022/index.mjs.map +0 -1
- package/mobile/components/data/media-list/index.d.ts +0 -5
- package/mobile/components/data/media-list/media-list-item/media-list-item.directive.d.ts +0 -8
- package/mobile/components/data/media-list/media-list.component.d.ts +0 -33
- package/mobile/components/data/media-list/media-list.module.d.ts +0 -14
- package/mobile/components/data/media-list/media-list.props.d.ts +0 -1
- package/mobile/components/data/media-list/package.json +0 -23
- package/mobile/components/data/media-list/public_api.d.ts +0 -3
- package/mobile/components/device/barcode-scanner/.npmignore +0 -2
- package/mobile/components/device/barcode-scanner/barcode-scanner.component.d.ts +0 -18
- package/mobile/components/device/barcode-scanner/barcode-scanner.module.d.ts +0 -9
- package/mobile/components/device/barcode-scanner/barcode-scanner.props.d.ts +0 -1
- package/mobile/components/device/barcode-scanner/bundles/index.umd.js +0 -129
- package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.component.mjs +0 -69
- package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.module.mjs +0 -28
- package/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +0 -15
- package/mobile/components/device/barcode-scanner/esm2022/index.mjs +0 -5
- package/mobile/components/device/barcode-scanner/esm2022/public_api.mjs +0 -3
- package/mobile/components/device/barcode-scanner/fesm2022/index.mjs +0 -112
- package/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +0 -1
- package/mobile/components/device/barcode-scanner/index.d.ts +0 -5
- package/mobile/components/device/barcode-scanner/package.json +0 -23
- package/mobile/components/device/barcode-scanner/public_api.d.ts +0 -2
- package/mobile/components/device/camera/.npmignore +0 -2
- package/mobile/components/device/camera/bundles/index.umd.js +0 -170
- package/mobile/components/device/camera/camera.component.d.ts +0 -37
- package/mobile/components/device/camera/camera.module.d.ts +0 -9
- package/mobile/components/device/camera/camera.props.d.ts +0 -1
- package/mobile/components/device/camera/esm2022/camera.component.mjs +0 -101
- package/mobile/components/device/camera/esm2022/camera.module.mjs +0 -28
- package/mobile/components/device/camera/esm2022/camera.props.mjs +0 -25
- package/mobile/components/device/camera/esm2022/index.mjs +0 -5
- package/mobile/components/device/camera/esm2022/public_api.mjs +0 -3
- package/mobile/components/device/camera/fesm2022/index.mjs +0 -153
- package/mobile/components/device/camera/fesm2022/index.mjs.map +0 -1
- package/mobile/components/device/camera/index.d.ts +0 -5
- package/mobile/components/device/camera/package.json +0 -23
- package/mobile/components/device/camera/public_api.d.ts +0 -2
- package/mobile/components/input/file-upload/.npmignore +0 -2
- package/mobile/components/input/file-upload/bundles/index.umd.js +0 -88
- package/mobile/components/input/file-upload/esm2022/file-upload.directive.mjs +0 -41
- package/mobile/components/input/file-upload/esm2022/file-upload.module.mjs +0 -28
- package/mobile/components/input/file-upload/esm2022/index.mjs +0 -5
- package/mobile/components/input/file-upload/esm2022/public_api.mjs +0 -3
- package/mobile/components/input/file-upload/fesm2022/index.mjs +0 -71
- package/mobile/components/input/file-upload/fesm2022/index.mjs.map +0 -1
- package/mobile/components/input/file-upload/file-upload.directive.d.ts +0 -11
- package/mobile/components/input/file-upload/file-upload.module.d.ts +0 -9
- package/mobile/components/input/file-upload/index.d.ts +0 -5
- package/mobile/components/input/file-upload/package.json +0 -23
- package/mobile/components/input/file-upload/public_api.d.ts +0 -2
- package/mobile/components/page/default/.npmignore +0 -2
- package/mobile/components/page/default/bundles/index.umd.js +0 -127
- package/mobile/components/page/default/esm2022/index.mjs +0 -5
- package/mobile/components/page/default/esm2022/page-content-loader/page-content-loader.component.mjs +0 -24
- package/mobile/components/page/default/esm2022/page.directive.mjs +0 -58
- package/mobile/components/page/default/esm2022/page.module.mjs +0 -32
- package/mobile/components/page/default/esm2022/public_api.mjs +0 -4
- package/mobile/components/page/default/fesm2022/index.mjs +0 -110
- package/mobile/components/page/default/fesm2022/index.mjs.map +0 -1
- package/mobile/components/page/default/index.d.ts +0 -5
- package/mobile/components/page/default/package.json +0 -23
- package/mobile/components/page/default/page-content-loader/page-content-loader.component.d.ts +0 -7
- package/mobile/components/page/default/page.directive.d.ts +0 -19
- package/mobile/components/page/default/page.module.d.ts +0 -10
- package/mobile/components/page/default/public_api.d.ts +0 -3
- package/mobile/components/page/left-panel/.npmignore +0 -2
- package/mobile/components/page/left-panel/bundles/index.umd.js +0 -91
- package/mobile/components/page/left-panel/esm2022/index.mjs +0 -5
- package/mobile/components/page/left-panel/esm2022/left-panel.directive.mjs +0 -45
- package/mobile/components/page/left-panel/esm2022/left-panel.module.mjs +0 -28
- package/mobile/components/page/left-panel/esm2022/public_api.mjs +0 -3
- package/mobile/components/page/left-panel/fesm2022/index.mjs +0 -74
- package/mobile/components/page/left-panel/fesm2022/index.mjs.map +0 -1
- package/mobile/components/page/left-panel/index.d.ts +0 -5
- package/mobile/components/page/left-panel/left-panel.directive.d.ts +0 -16
- package/mobile/components/page/left-panel/left-panel.module.d.ts +0 -9
- package/mobile/components/page/left-panel/package.json +0 -23
- package/mobile/components/page/left-panel/public_api.d.ts +0 -2
- package/mobile/components/page/mobile-navbar/.npmignore +0 -2
- package/mobile/components/page/mobile-navbar/bundles/index.umd.js +0 -332
- package/mobile/components/page/mobile-navbar/esm2022/index.mjs +0 -5
- package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.component.mjs +0 -247
- package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.module.mjs +0 -32
- package/mobile/components/page/mobile-navbar/esm2022/mobile-navbar.props.mjs +0 -41
- package/mobile/components/page/mobile-navbar/esm2022/public_api.mjs +0 -3
- package/mobile/components/page/mobile-navbar/fesm2022/index.mjs +0 -317
- package/mobile/components/page/mobile-navbar/fesm2022/index.mjs.map +0 -1
- package/mobile/components/page/mobile-navbar/index.d.ts +0 -5
- package/mobile/components/page/mobile-navbar/mobile-navbar.component.d.ts +0 -50
- package/mobile/components/page/mobile-navbar/mobile-navbar.module.d.ts +0 -10
- package/mobile/components/page/mobile-navbar/mobile-navbar.props.d.ts +0 -2
- package/mobile/components/page/mobile-navbar/package.json +0 -23
- package/mobile/components/page/mobile-navbar/public_api.d.ts +0 -2
- package/mobile/components/page/tab-bar/.npmignore +0 -2
- package/mobile/components/page/tab-bar/bundles/index.umd.js +0 -279
- package/mobile/components/page/tab-bar/esm2022/index.mjs +0 -5
- package/mobile/components/page/tab-bar/esm2022/public_api.mjs +0 -3
- package/mobile/components/page/tab-bar/esm2022/tab-bar.module.mjs +0 -28
- package/mobile/components/page/tab-bar/esm2022/tabbar.component.mjs +0 -219
- package/mobile/components/page/tab-bar/esm2022/tabbar.props.mjs +0 -15
- package/mobile/components/page/tab-bar/fesm2022/index.mjs +0 -262
- package/mobile/components/page/tab-bar/fesm2022/index.mjs.map +0 -1
- package/mobile/components/page/tab-bar/index.d.ts +0 -5
- package/mobile/components/page/tab-bar/package.json +0 -23
- package/mobile/components/page/tab-bar/public_api.d.ts +0 -2
- package/mobile/components/page/tab-bar/tab-bar.module.d.ts +0 -9
- package/mobile/components/page/tab-bar/tabbar.component.d.ts +0 -40
- package/mobile/components/page/tab-bar/tabbar.props.d.ts +0 -1
- package/mobile/core/.npmignore +0 -2
- package/mobile/core/bundles/index.umd.js +0 -1658
- package/mobile/core/core.module.d.ts +0 -15
- package/mobile/core/esm2022/core.module.mjs +0 -79
- package/mobile/core/esm2022/index.mjs +0 -5
- package/mobile/core/esm2022/native.xhr.mjs +0 -340
- package/mobile/core/esm2022/public_api.mjs +0 -12
- package/mobile/core/esm2022/services/device-file-cache.service.mjs +0 -92
- package/mobile/core/esm2022/services/device-file-download.service.mjs +0 -154
- package/mobile/core/esm2022/services/device-file-opener.service.mjs +0 -112
- package/mobile/core/esm2022/services/device-file-upload.service.mjs +0 -91
- package/mobile/core/esm2022/services/device-file.service.mjs +0 -237
- package/mobile/core/esm2022/services/device-start-up-service.mjs +0 -2
- package/mobile/core/esm2022/services/device.service.mjs +0 -150
- package/mobile/core/esm2022/services/ext-app-message.service.mjs +0 -114
- package/mobile/core/esm2022/services/network.service.mjs +0 -358
- package/mobile/core/fesm2022/index.mjs +0 -1660
- package/mobile/core/fesm2022/index.mjs.map +0 -1
- package/mobile/core/index.d.ts +0 -5
- package/mobile/core/native.xhr.d.ts +0 -36
- package/mobile/core/package.json +0 -28
- package/mobile/core/public_api.d.ts +0 -11
- package/mobile/core/services/device-file-cache.service.d.ts +0 -24
- package/mobile/core/services/device-file-download.service.d.ts +0 -36
- package/mobile/core/services/device-file-opener.service.d.ts +0 -25
- package/mobile/core/services/device-file-upload.service.d.ts +0 -27
- package/mobile/core/services/device-file.service.d.ts +0 -45
- package/mobile/core/services/device-start-up-service.d.ts +0 -4
- package/mobile/core/services/device.service.d.ts +0 -52
- package/mobile/core/services/ext-app-message.service.d.ts +0 -24
- package/mobile/core/services/network.service.d.ts +0 -118
- package/mobile/offline/.npmignore +0 -2
- package/mobile/offline/bundles/index.umd.js +0 -3512
- package/mobile/offline/esm2022/index.mjs +0 -5
- package/mobile/offline/esm2022/models/config.mjs +0 -64
- package/mobile/offline/esm2022/models/local-db-store.mjs +0 -412
- package/mobile/offline/esm2022/offline.module.mjs +0 -100
- package/mobile/offline/esm2022/public_api.mjs +0 -7
- package/mobile/offline/esm2022/services/change-log.service.mjs +0 -332
- package/mobile/offline/esm2022/services/local-db-data-pull.service.mjs +0 -525
- package/mobile/offline/esm2022/services/local-db-management.service.mjs +0 -855
- package/mobile/offline/esm2022/services/local-db.service.mjs +0 -193
- package/mobile/offline/esm2022/services/local-key-value.service.mjs +0 -87
- package/mobile/offline/esm2022/services/push.service.mjs +0 -49
- package/mobile/offline/esm2022/services/workers/error-blocker.mjs +0 -115
- package/mobile/offline/esm2022/services/workers/file-handler.mjs +0 -162
- package/mobile/offline/esm2022/services/workers/id-resolver.mjs +0 -154
- package/mobile/offline/esm2022/services/workers/multi-part-param-transformer.mjs +0 -63
- package/mobile/offline/esm2022/utils/file-upload.utils.mjs +0 -59
- package/mobile/offline/esm2022/utils/live-variable.utils.mjs +0 -232
- package/mobile/offline/esm2022/utils/query-executor.utils.mjs +0 -82
- package/mobile/offline/esm2022/utils/security.utils.mjs +0 -119
- package/mobile/offline/esm2022/utils/utils.mjs +0 -8
- package/mobile/offline/fesm2022/index.mjs +0 -3529
- package/mobile/offline/fesm2022/index.mjs.map +0 -1
- package/mobile/offline/index.d.ts +0 -5
- package/mobile/offline/models/config.d.ts +0 -80
- package/mobile/offline/models/local-db-store.d.ts +0 -119
- package/mobile/offline/offline.module.d.ts +0 -17
- package/mobile/offline/package.json +0 -28
- package/mobile/offline/public_api.d.ts +0 -6
- package/mobile/offline/services/change-log.service.d.ts +0 -112
- package/mobile/offline/services/local-db-data-pull.service.d.ts +0 -139
- package/mobile/offline/services/local-db-management.service.d.ts +0 -179
- package/mobile/offline/services/local-db.service.d.ts +0 -83
- package/mobile/offline/services/local-key-value.service.d.ts +0 -38
- package/mobile/offline/services/push.service.d.ts +0 -11
- package/mobile/offline/services/workers/error-blocker.d.ts +0 -26
- package/mobile/offline/services/workers/file-handler.d.ts +0 -56
- package/mobile/offline/services/workers/id-resolver.d.ts +0 -26
- package/mobile/offline/services/workers/multi-part-param-transformer.d.ts +0 -11
- package/mobile/offline/utils/file-upload.utils.d.ts +0 -14
- package/mobile/offline/utils/live-variable.utils.d.ts +0 -24
- package/mobile/offline/utils/query-executor.utils.d.ts +0 -15
- package/mobile/offline/utils/security.utils.d.ts +0 -19
- package/mobile/offline/utils/utils.d.ts +0 -2
- package/mobile/placeholder/runtime/.npmignore +0 -2
- package/mobile/placeholder/runtime/bundles/index.umd.js +0 -70
- package/mobile/placeholder/runtime/components/app-ext.component.d.ts +0 -5
- package/mobile/placeholder/runtime/esm2022/components/app-ext.component.mjs +0 -19
- package/mobile/placeholder/runtime/esm2022/index.mjs +0 -5
- package/mobile/placeholder/runtime/esm2022/mobile-runtime.module.mjs +0 -27
- package/mobile/placeholder/runtime/esm2022/public_api.mjs +0 -3
- package/mobile/placeholder/runtime/fesm2022/index.mjs +0 -50
- package/mobile/placeholder/runtime/fesm2022/index.mjs.map +0 -1
- package/mobile/placeholder/runtime/index.d.ts +0 -5
- package/mobile/placeholder/runtime/mobile-runtime.module.d.ts +0 -9
- package/mobile/placeholder/runtime/package.json +0 -27
- package/mobile/placeholder/runtime/public_api.d.ts +0 -2
- package/mobile/placeholder/runtime-dynamic/.npmignore +0 -2
- package/mobile/placeholder/runtime-dynamic/bundles/index.umd.js +0 -40
- package/mobile/placeholder/runtime-dynamic/esm2022/index.mjs +0 -5
- package/mobile/placeholder/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -13
- package/mobile/placeholder/runtime-dynamic/esm2022/public_api.mjs +0 -2
- package/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs +0 -20
- package/mobile/placeholder/runtime-dynamic/fesm2022/index.mjs.map +0 -1
- package/mobile/placeholder/runtime-dynamic/index.d.ts +0 -5
- package/mobile/placeholder/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -7
- package/mobile/placeholder/runtime-dynamic/package.json +0 -23
- package/mobile/placeholder/runtime-dynamic/public_api.d.ts +0 -1
- package/mobile/runtime/.npmignore +0 -2
- package/mobile/runtime/bundles/index.umd.js +0 -732
- package/mobile/runtime/components/app-ext.component.d.ts +0 -14
- package/mobile/runtime/esm2022/components/app-ext.component.mjs +0 -59
- package/mobile/runtime/esm2022/index.mjs +0 -5
- package/mobile/runtime/esm2022/mobile-runtime.module.mjs +0 -351
- package/mobile/runtime/esm2022/public_api.mjs +0 -6
- package/mobile/runtime/esm2022/services/cookie.service.mjs +0 -135
- package/mobile/runtime/esm2022/services/http-interceptor.service.mjs +0 -147
- package/mobile/runtime/esm2022/services/webprocess.service.mjs +0 -76
- package/mobile/runtime/fesm2022/index.mjs +0 -742
- package/mobile/runtime/fesm2022/index.mjs.map +0 -1
- package/mobile/runtime/index.d.ts +0 -5
- package/mobile/runtime/mobile-runtime.module.d.ts +0 -51
- package/mobile/runtime/package.json +0 -28
- package/mobile/runtime/public_api.d.ts +0 -5
- package/mobile/runtime/services/cookie.service.d.ts +0 -31
- package/mobile/runtime/services/http-interceptor.service.d.ts +0 -19
- package/mobile/runtime/services/webprocess.service.d.ts +0 -15
- package/mobile/runtime-dynamic/.npmignore +0 -2
- package/mobile/runtime-dynamic/bundles/index.umd.js +0 -461
- package/mobile/runtime-dynamic/esm2022/index.mjs +0 -5
- package/mobile/runtime-dynamic/esm2022/mobile-runtime-dynamic.module.mjs +0 -48
- package/mobile/runtime-dynamic/esm2022/public_api.mjs +0 -2
- package/mobile/runtime-dynamic/esm2022/services/live-sync.service.mjs +0 -404
- package/mobile/runtime-dynamic/fesm2022/index.mjs +0 -454
- package/mobile/runtime-dynamic/fesm2022/index.mjs.map +0 -1
- package/mobile/runtime-dynamic/index.d.ts +0 -5
- package/mobile/runtime-dynamic/mobile-runtime-dynamic.module.d.ts +0 -8
- package/mobile/runtime-dynamic/package.json +0 -23
- package/mobile/runtime-dynamic/public_api.d.ts +0 -1
- package/mobile/runtime-dynamic/services/live-sync.service.d.ts +0 -38
- package/mobile/variables/.npmignore +0 -2
- package/mobile/variables/bundles/index.umd.js +0 -1166
- package/mobile/variables/esm2022/index.mjs +0 -5
- package/mobile/variables/esm2022/public_api.mjs +0 -10
- package/mobile/variables/esm2022/services/calendar-service.mjs +0 -77
- package/mobile/variables/esm2022/services/camera-service.mjs +0 -70
- package/mobile/variables/esm2022/services/contacts-service.mjs +0 -74
- package/mobile/variables/esm2022/services/datasync-service.mjs +0 -363
- package/mobile/variables/esm2022/services/device-service/device-service.mjs +0 -161
- package/mobile/variables/esm2022/services/device-service/location-service.mjs +0 -200
- package/mobile/variables/esm2022/services/file-service.mjs +0 -87
- package/mobile/variables/esm2022/services/scan-service.mjs +0 -60
- package/mobile/variables/esm2022/variables.module.mjs +0 -78
- package/mobile/variables/fesm2022/index.mjs +0 -1143
- package/mobile/variables/fesm2022/index.mjs.map +0 -1
- package/mobile/variables/index.d.ts +0 -5
- package/mobile/variables/package.json +0 -28
- package/mobile/variables/public_api.d.ts +0 -9
- package/mobile/variables/services/calendar-service.d.ts +0 -10
- package/mobile/variables/services/camera-service.d.ts +0 -8
- package/mobile/variables/services/contacts-service.d.ts +0 -6
- package/mobile/variables/services/datasync-service.d.ts +0 -11
- package/mobile/variables/services/device-service/device-service.d.ts +0 -17
- package/mobile/variables/services/device-service/location-service.d.ts +0 -63
- package/mobile/variables/services/file-service.d.ts +0 -7
- package/mobile/variables/services/scan-service.d.ts +0 -7
- package/mobile/variables/variables.module.d.ts +0 -25
- package/oAuth/esm2022/oAuth.module.mjs +0 -19
- package/oAuth/oAuth.module.d.ts +0 -8
- package/scripts/fullcalendar/main.min.js +0 -6
- package/security/esm2022/security.module.mjs +0 -19
- package/security/security.module.d.ts +0 -8
- package/variables/esm2022/manager/variable/device-variable-manager.mjs +0 -48
- package/variables/esm2022/manager/variable/device-variable-operation.mjs +0 -2
- package/variables/esm2022/manager/variable/device-variable-service.mjs +0 -45
- package/variables/esm2022/model/variable/device-variable.mjs +0 -19
- package/variables/esm2022/variables.module.mjs +0 -52
- package/variables/manager/variable/device-variable-manager.d.ts +0 -26
- package/variables/manager/variable/device-variable-operation.d.ts +0 -37
- package/variables/manager/variable/device-variable-service.d.ts +0 -6
- package/variables/model/variable/device-variable.d.ts +0 -6
- package/variables/variables.module.d.ts +0 -16
|
@@ -1 +0,0 @@
|
|
|
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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"}
|