@jigx/core-sdk 1.0.0
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/CHANGELOG.md +95 -0
- package/README.md +87 -0
- package/dist/PACKAGE.d.ts +4 -0
- package/dist/PACKAGE.d.ts.map +1 -0
- package/dist/PACKAGE.js +5 -0
- package/dist/abstract/app-info.d.ts +8 -0
- package/dist/abstract/app-info.d.ts.map +1 -0
- package/dist/abstract/app-info.js +8 -0
- package/dist/abstract/app-name.d.ts +15 -0
- package/dist/abstract/app-name.d.ts.map +1 -0
- package/dist/abstract/app-name.js +28 -0
- package/dist/abstract/base-builder.d.ts +4 -0
- package/dist/abstract/base-builder.d.ts.map +1 -0
- package/dist/abstract/base-builder.js +3 -0
- package/dist/abstract/element-base-builder.d.ts +7 -0
- package/dist/abstract/element-base-builder.d.ts.map +1 -0
- package/dist/abstract/element-base-builder.js +11 -0
- package/dist/abstract/generic.d.ts +31 -0
- package/dist/abstract/generic.d.ts.map +1 -0
- package/dist/abstract/generic.js +2 -0
- package/dist/abstract/index.d.ts +12 -0
- package/dist/abstract/index.d.ts.map +1 -0
- package/dist/abstract/index.js +11 -0
- package/dist/abstract/register.d.ts +31 -0
- package/dist/abstract/register.d.ts.map +1 -0
- package/dist/abstract/register.js +48 -0
- package/dist/abstract/sdk.expression.d.ts +43 -0
- package/dist/abstract/sdk.expression.d.ts.map +1 -0
- package/dist/abstract/sdk.expression.js +175 -0
- package/dist/abstract/sdk.text.d.ts +23 -0
- package/dist/abstract/sdk.text.d.ts.map +1 -0
- package/dist/abstract/sdk.text.js +110 -0
- package/dist/abstract/sdk.types.d.ts +16 -0
- package/dist/abstract/sdk.types.d.ts.map +1 -0
- package/dist/abstract/sdk.types.js +88 -0
- package/dist/abstract/zod.strata.d.ts +17 -0
- package/dist/abstract/zod.strata.d.ts.map +1 -0
- package/dist/abstract/zod.strata.js +11 -0
- package/dist/abstract/zod.types.d.ts +1937 -0
- package/dist/abstract/zod.types.d.ts.map +1 -0
- package/dist/abstract/zod.types.js +848 -0
- package/dist/action/action-definition.builder.d.ts +16 -0
- package/dist/action/action-definition.builder.d.ts.map +1 -0
- package/dist/action/action-definition.builder.js +35 -0
- package/dist/action/action.descriptor.d.ts +8 -0
- package/dist/action/action.descriptor.d.ts.map +1 -0
- package/dist/action/action.descriptor.js +2 -0
- package/dist/action/index.d.ts +57 -0
- package/dist/action/index.d.ts.map +1 -0
- package/dist/action/index.js +48 -0
- package/dist/action/ja.abstract.d.ts +33 -0
- package/dist/action/ja.abstract.d.ts.map +1 -0
- package/dist/action/ja.abstract.js +58 -0
- package/dist/action/ja.action-definition.d.ts +11 -0
- package/dist/action/ja.action-definition.d.ts.map +1 -0
- package/dist/action/ja.action-definition.js +12 -0
- package/dist/action/ja.action-list.d.ts +9 -0
- package/dist/action/ja.action-list.d.ts.map +1 -0
- package/dist/action/ja.action-list.js +15 -0
- package/dist/action/ja.clear-queue.d.ts +9 -0
- package/dist/action/ja.clear-queue.d.ts.map +1 -0
- package/dist/action/ja.clear-queue.js +9 -0
- package/dist/action/ja.color.d.ts +3 -0
- package/dist/action/ja.color.d.ts.map +1 -0
- package/dist/action/ja.color.js +2 -0
- package/dist/action/ja.confirm.abstract.d.ts +16 -0
- package/dist/action/ja.confirm.abstract.d.ts.map +1 -0
- package/dist/action/ja.confirm.abstract.js +25 -0
- package/dist/action/ja.confirm.d.ts +23 -0
- package/dist/action/ja.confirm.d.ts.map +1 -0
- package/dist/action/ja.confirm.js +28 -0
- package/dist/action/ja.delete-queue-command.d.ts +9 -0
- package/dist/action/ja.delete-queue-command.d.ts.map +1 -0
- package/dist/action/ja.delete-queue-command.js +9 -0
- package/dist/action/ja.delete-sync-scope.d.ts +10 -0
- package/dist/action/ja.delete-sync-scope.d.ts.map +1 -0
- package/dist/action/ja.delete-sync-scope.js +14 -0
- package/dist/action/ja.delete-sync-status.d.ts +9 -0
- package/dist/action/ja.delete-sync-status.d.ts.map +1 -0
- package/dist/action/ja.delete-sync-status.js +9 -0
- package/dist/action/ja.evaluate.d.ts +12 -0
- package/dist/action/ja.evaluate.d.ts.map +1 -0
- package/dist/action/ja.evaluate.js +9 -0
- package/dist/action/ja.execute-action.d.ts +11 -0
- package/dist/action/ja.execute-action.d.ts.map +1 -0
- package/dist/action/ja.execute-action.js +15 -0
- package/dist/action/ja.execute-entities.d.ts +7 -0
- package/dist/action/ja.execute-entities.d.ts.map +1 -0
- package/dist/action/ja.execute-entities.js +8 -0
- package/dist/action/ja.execute-entity.abstract.d.ts +41 -0
- package/dist/action/ja.execute-entity.abstract.d.ts.map +1 -0
- package/dist/action/ja.execute-entity.abstract.js +104 -0
- package/dist/action/ja.execute-entity.d.ts +6 -0
- package/dist/action/ja.execute-entity.d.ts.map +1 -0
- package/dist/action/ja.execute-entity.dynamic-data.d.ts +6 -0
- package/dist/action/ja.execute-entity.dynamic-data.d.ts.map +1 -0
- package/dist/action/ja.execute-entity.dynamic-data.js +2 -0
- package/dist/action/ja.execute-entity.generic.d.ts +11 -0
- package/dist/action/ja.execute-entity.generic.d.ts.map +1 -0
- package/dist/action/ja.execute-entity.generic.js +2 -0
- package/dist/action/ja.execute-entity.js +8 -0
- package/dist/action/ja.execute-entity.sql.d.ts +12 -0
- package/dist/action/ja.execute-entity.sql.d.ts.map +1 -0
- package/dist/action/ja.execute-entity.sql.js +2 -0
- package/dist/action/ja.execute-sql.abstract.d.ts +6 -0
- package/dist/action/ja.execute-sql.abstract.d.ts.map +1 -0
- package/dist/action/ja.execute-sql.abstract.js +2 -0
- package/dist/action/ja.execute-sql.d.ts +16 -0
- package/dist/action/ja.execute-sql.d.ts.map +1 -0
- package/dist/action/ja.execute-sql.js +64 -0
- package/dist/action/ja.find-replace.d.ts +12 -0
- package/dist/action/ja.find-replace.d.ts.map +1 -0
- package/dist/action/ja.find-replace.js +22 -0
- package/dist/action/ja.generate-file.d.ts +11 -0
- package/dist/action/ja.generate-file.d.ts.map +1 -0
- package/dist/action/ja.generate-file.js +19 -0
- package/dist/action/ja.generate-pdf.d.ts +10 -0
- package/dist/action/ja.generate-pdf.d.ts.map +1 -0
- package/dist/action/ja.generate-pdf.js +10 -0
- package/dist/action/ja.go-back.d.ts +9 -0
- package/dist/action/ja.go-back.d.ts.map +1 -0
- package/dist/action/ja.go-back.js +11 -0
- package/dist/action/ja.go-to.d.ts +18 -0
- package/dist/action/ja.go-to.d.ts.map +1 -0
- package/dist/action/ja.go-to.js +41 -0
- package/dist/action/ja.in-background.d.ts +95 -0
- package/dist/action/ja.in-background.d.ts.map +1 -0
- package/dist/action/ja.in-background.factory.d.ts +88 -0
- package/dist/action/ja.in-background.factory.d.ts.map +1 -0
- package/dist/action/ja.in-background.factory.js +98 -0
- package/dist/action/ja.in-background.js +247 -0
- package/dist/action/ja.info-modal.d.ts +37 -0
- package/dist/action/ja.info-modal.d.ts.map +1 -0
- package/dist/action/ja.info-modal.js +61 -0
- package/dist/action/ja.jig-actions.d.ts +16 -0
- package/dist/action/ja.jig-actions.d.ts.map +1 -0
- package/dist/action/ja.jig-actions.js +35 -0
- package/dist/action/ja.on-button.factory.d.ts +89 -0
- package/dist/action/ja.on-button.factory.d.ts.map +1 -0
- package/dist/action/ja.on-button.factory.js +86 -0
- package/dist/action/ja.open-app-settings.d.ts +6 -0
- package/dist/action/ja.open-app-settings.d.ts.map +1 -0
- package/dist/action/ja.open-app-settings.js +8 -0
- package/dist/action/ja.open-map.abstract.d.ts +6 -0
- package/dist/action/ja.open-map.abstract.d.ts.map +1 -0
- package/dist/action/ja.open-map.abstract.js +2 -0
- package/dist/action/ja.open-map.d.ts +11 -0
- package/dist/action/ja.open-map.d.ts.map +1 -0
- package/dist/action/ja.open-map.js +25 -0
- package/dist/action/ja.open-media-picker.abstract.d.ts +8 -0
- package/dist/action/ja.open-media-picker.abstract.d.ts.map +1 -0
- package/dist/action/ja.open-media-picker.abstract.js +2 -0
- package/dist/action/ja.open-media-picker.d.ts +18 -0
- package/dist/action/ja.open-media-picker.d.ts.map +1 -0
- package/dist/action/ja.open-media-picker.js +46 -0
- package/dist/action/ja.open-scanner.d.ts +14 -0
- package/dist/action/ja.open-scanner.d.ts.map +1 -0
- package/dist/action/ja.open-scanner.js +23 -0
- package/dist/action/ja.open-url.d.ts +10 -0
- package/dist/action/ja.open-url.d.ts.map +1 -0
- package/dist/action/ja.open-url.js +13 -0
- package/dist/action/ja.print.d.ts +10 -0
- package/dist/action/ja.print.d.ts.map +1 -0
- package/dist/action/ja.print.js +17 -0
- package/dist/action/ja.reset-application-state.d.ts +9 -0
- package/dist/action/ja.reset-application-state.d.ts.map +1 -0
- package/dist/action/ja.reset-application-state.js +12 -0
- package/dist/action/ja.reset-component-state.d.ts +9 -0
- package/dist/action/ja.reset-component-state.d.ts.map +1 -0
- package/dist/action/ja.reset-component-state.js +13 -0
- package/dist/action/ja.reset-screen-state.d.ts +9 -0
- package/dist/action/ja.reset-screen-state.d.ts.map +1 -0
- package/dist/action/ja.reset-screen-state.js +12 -0
- package/dist/action/ja.reset-state.d.ts +9 -0
- package/dist/action/ja.reset-state.d.ts.map +1 -0
- package/dist/action/ja.reset-state.js +13 -0
- package/dist/action/ja.retry-queue-command.d.ts +9 -0
- package/dist/action/ja.retry-queue-command.d.ts.map +1 -0
- package/dist/action/ja.retry-queue-command.js +9 -0
- package/dist/action/ja.sdk.d.ts +4 -0
- package/dist/action/ja.sdk.d.ts.map +1 -0
- package/dist/action/ja.sdk.js +2 -0
- package/dist/action/ja.set-active-tab.d.ts +13 -0
- package/dist/action/ja.set-active-tab.d.ts.map +1 -0
- package/dist/action/ja.set-active-tab.js +29 -0
- package/dist/action/ja.set-application-state.d.ts +9 -0
- package/dist/action/ja.set-application-state.d.ts.map +1 -0
- package/dist/action/ja.set-application-state.js +17 -0
- package/dist/action/ja.set-screen-state.d.ts +9 -0
- package/dist/action/ja.set-screen-state.d.ts.map +1 -0
- package/dist/action/ja.set-screen-state.js +12 -0
- package/dist/action/ja.share.d.ts +12 -0
- package/dist/action/ja.share.d.ts.map +1 -0
- package/dist/action/ja.share.js +23 -0
- package/dist/action/ja.show-alert.d.ts +33 -0
- package/dist/action/ja.show-alert.d.ts.map +1 -0
- package/dist/action/ja.show-alert.js +61 -0
- package/dist/action/ja.start-location-sharing.abstract.d.ts +6 -0
- package/dist/action/ja.start-location-sharing.abstract.d.ts.map +1 -0
- package/dist/action/ja.start-location-sharing.abstract.js +2 -0
- package/dist/action/ja.start-location-sharing.d.ts +18 -0
- package/dist/action/ja.start-location-sharing.d.ts.map +1 -0
- package/dist/action/ja.start-location-sharing.js +33 -0
- package/dist/action/ja.start-sync-scope.d.ts +9 -0
- package/dist/action/ja.start-sync-scope.d.ts.map +1 -0
- package/dist/action/ja.start-sync-scope.js +18 -0
- package/dist/action/ja.stop-location-sharing.d.ts +6 -0
- package/dist/action/ja.stop-location-sharing.d.ts.map +1 -0
- package/dist/action/ja.stop-location-sharing.js +8 -0
- package/dist/action/ja.submit-form.abstract.d.ts +11 -0
- package/dist/action/ja.submit-form.abstract.d.ts.map +1 -0
- package/dist/action/ja.submit-form.abstract.js +2 -0
- package/dist/action/ja.submit-form.d.ts +31 -0
- package/dist/action/ja.submit-form.d.ts.map +1 -0
- package/dist/action/ja.submit-form.js +124 -0
- package/dist/action/ja.swipeable-action.d.ts +19 -0
- package/dist/action/ja.swipeable-action.d.ts.map +1 -0
- package/dist/action/ja.swipeable-action.js +25 -0
- package/dist/action/ja.sync-entities.abstract.d.ts +25 -0
- package/dist/action/ja.sync-entities.abstract.d.ts.map +1 -0
- package/dist/action/ja.sync-entities.abstract.js +2 -0
- package/dist/action/ja.sync-entities.d.ts +32 -0
- package/dist/action/ja.sync-entities.d.ts.map +1 -0
- package/dist/action/ja.sync-entities.js +142 -0
- package/dist/action/ja.update-profile.d.ts +12 -0
- package/dist/action/ja.update-profile.d.ts.map +1 -0
- package/dist/action/ja.update-profile.js +20 -0
- package/dist/application/application.sdk.d.ts +84 -0
- package/dist/application/application.sdk.d.ts.map +1 -0
- package/dist/application/application.sdk.js +217 -0
- package/dist/application/application.tab.d.ts +20 -0
- package/dist/application/application.tab.d.ts.map +1 -0
- package/dist/application/application.tab.js +45 -0
- package/dist/application/context.sdk.d.ts +48 -0
- package/dist/application/context.sdk.d.ts.map +1 -0
- package/dist/application/context.sdk.js +116 -0
- package/dist/application/index.d.ts +4 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +4 -0
- package/dist/assets/example-extraction-cache.json +9 -0
- package/dist/assets/extracted-core-sdk-examples.yaml +44440 -0
- package/dist/assets/extracted-core-sdk-types.yaml +12100 -0
- package/dist/assets/stream-line-icons.csv +19281 -0
- package/dist/assets/type-extraction-cache.json +9 -0
- package/dist/builder/application-analyzer/application-analyzer.d.ts +42 -0
- package/dist/builder/application-analyzer/application-analyzer.d.ts.map +1 -0
- package/dist/builder/application-analyzer/application-analyzer.js +150 -0
- package/dist/builder/application-analyzer/create-application-analyzer.d.ts +17 -0
- package/dist/builder/application-analyzer/create-application-analyzer.d.ts.map +1 -0
- package/dist/builder/application-analyzer/create-application-analyzer.js +121 -0
- package/dist/builder/application-analyzer/index.d.ts +5 -0
- package/dist/builder/application-analyzer/index.d.ts.map +1 -0
- package/dist/builder/application-analyzer/index.js +5 -0
- package/dist/builder/application-analyzer/select-component-nodes.d.ts +7 -0
- package/dist/builder/application-analyzer/select-component-nodes.d.ts.map +1 -0
- package/dist/builder/application-analyzer/select-component-nodes.js +15 -0
- package/dist/builder/application-analyzer/select-datasource-node-by-id.d.ts +8 -0
- package/dist/builder/application-analyzer/select-datasource-node-by-id.d.ts.map +1 -0
- package/dist/builder/application-analyzer/select-datasource-node-by-id.js +20 -0
- package/dist/builder/application-analyzer/types.d.ts +60 -0
- package/dist/builder/application-analyzer/types.d.ts.map +1 -0
- package/dist/builder/application-analyzer/types.js +16 -0
- package/dist/builder/application-analyzer/utils.d.ts +3 -0
- package/dist/builder/application-analyzer/utils.d.ts.map +1 -0
- package/dist/builder/application-analyzer/utils.js +8 -0
- package/dist/builder/builder.d.ts +8 -0
- package/dist/builder/builder.d.ts.map +1 -0
- package/dist/builder/builder.js +54 -0
- package/dist/builder/index.d.ts +5 -0
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/index.js +4 -0
- package/dist/builder/transform-summary.d.ts +3 -0
- package/dist/builder/transform-summary.d.ts.map +1 -0
- package/dist/builder/transform-summary.js +39 -0
- package/dist/builder/types.d.ts +8 -0
- package/dist/builder/types.d.ts.map +1 -0
- package/dist/builder/types.js +2 -0
- package/dist/builder/validate-datasource-ids.d.ts +17 -0
- package/dist/builder/validate-datasource-ids.d.ts.map +1 -0
- package/dist/builder/validate-datasource-ids.js +51 -0
- package/dist/component/common/index.d.ts +22 -0
- package/dist/component/common/index.d.ts.map +1 -0
- package/dist/component/common/index.js +16 -0
- package/dist/component/common/jc.avatar-field.types.d.ts +9 -0
- package/dist/component/common/jc.avatar-field.types.d.ts.map +1 -0
- package/dist/component/common/jc.avatar-field.types.js +11 -0
- package/dist/component/common/jc.chart.common.abstract.d.ts +85 -0
- package/dist/component/common/jc.chart.common.abstract.d.ts.map +1 -0
- package/dist/component/common/jc.chart.common.abstract.js +2 -0
- package/dist/component/common/jc.chart.common.builders.d.ts +37 -0
- package/dist/component/common/jc.chart.common.builders.d.ts.map +1 -0
- package/dist/component/common/jc.chart.common.builders.js +81 -0
- package/dist/component/common/jc.component.types.d.ts +101 -0
- package/dist/component/common/jc.component.types.d.ts.map +1 -0
- package/dist/component/common/jc.component.types.js +144 -0
- package/dist/component/common/jc.context.d.ts +7 -0
- package/dist/component/common/jc.context.d.ts.map +1 -0
- package/dist/component/common/jc.context.js +2 -0
- package/dist/component/common/jc.element.types.d.ts +14 -0
- package/dist/component/common/jc.element.types.d.ts.map +1 -0
- package/dist/component/common/jc.element.types.js +13 -0
- package/dist/component/common/jc.field-base.builder.d.ts +21 -0
- package/dist/component/common/jc.field-base.builder.d.ts.map +1 -0
- package/dist/component/common/jc.field-base.builder.js +101 -0
- package/dist/component/common/jc.field-base.types.d.ts +28 -0
- package/dist/component/common/jc.field-base.types.d.ts.map +1 -0
- package/dist/component/common/jc.field-base.types.js +2 -0
- package/dist/component/common/jc.left-right.element.avatar.d.ts +11 -0
- package/dist/component/common/jc.left-right.element.avatar.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.avatar.js +18 -0
- package/dist/component/common/jc.left-right.element.badge.d.ts +11 -0
- package/dist/component/common/jc.left-right.element.badge.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.badge.js +17 -0
- package/dist/component/common/jc.left-right.element.button.d.ts +11 -0
- package/dist/component/common/jc.left-right.element.button.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.button.js +14 -0
- package/dist/component/common/jc.left-right.element.checkbox.d.ts +13 -0
- package/dist/component/common/jc.left-right.element.checkbox.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.checkbox.js +21 -0
- package/dist/component/common/jc.left-right.element.d.ts +31 -0
- package/dist/component/common/jc.left-right.element.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.icon.d.ts +18 -0
- package/dist/component/common/jc.left-right.element.icon.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.icon.js +32 -0
- package/dist/component/common/jc.left-right.element.image.d.ts +16 -0
- package/dist/component/common/jc.left-right.element.image.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.image.js +29 -0
- package/dist/component/common/jc.left-right.element.js +2 -0
- package/dist/component/common/jc.left-right.element.progress.d.ts +11 -0
- package/dist/component/common/jc.left-right.element.progress.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.progress.js +17 -0
- package/dist/component/common/jc.left-right.element.switch.d.ts +13 -0
- package/dist/component/common/jc.left-right.element.switch.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.switch.js +21 -0
- package/dist/component/common/jc.left-right.element.value.d.ts +10 -0
- package/dist/component/common/jc.left-right.element.value.d.ts.map +1 -0
- package/dist/component/common/jc.left-right.element.value.js +12 -0
- package/dist/component/common/jc.picker-field-options.types.d.ts +13 -0
- package/dist/component/common/jc.picker-field-options.types.d.ts.map +1 -0
- package/dist/component/common/jc.picker-field-options.types.js +2 -0
- package/dist/component/common/jc.text.types.d.ts +6 -0
- package/dist/component/common/jc.text.types.d.ts.map +1 -0
- package/dist/component/common/jc.text.types.js +2 -0
- package/dist/component/common/jc.validation.d.ts +9 -0
- package/dist/component/common/jc.validation.d.ts.map +1 -0
- package/dist/component/common/jc.validation.js +48 -0
- package/dist/component/index.d.ts +86 -0
- package/dist/component/index.d.ts.map +1 -0
- package/dist/component/index.js +83 -0
- package/dist/component/jc.abstract.d.ts +32 -0
- package/dist/component/jc.abstract.d.ts.map +1 -0
- package/dist/component/jc.abstract.factory.d.ts +488 -0
- package/dist/component/jc.abstract.factory.d.ts.map +1 -0
- package/dist/component/jc.abstract.factory.js +757 -0
- package/dist/component/jc.abstract.js +53 -0
- package/dist/component/jc.abstract.utils.d.ts +3 -0
- package/dist/component/jc.abstract.utils.d.ts.map +1 -0
- package/dist/component/jc.abstract.utils.js +26 -0
- package/dist/component/jc.amount-control.d.ts +16 -0
- package/dist/component/jc.amount-control.d.ts.map +1 -0
- package/dist/component/jc.amount-control.js +36 -0
- package/dist/component/jc.avatar-field.d.ts +11 -0
- package/dist/component/jc.avatar-field.d.ts.map +1 -0
- package/dist/component/jc.avatar-field.js +27 -0
- package/dist/component/jc.avatar.d.ts +14 -0
- package/dist/component/jc.avatar.d.ts.map +1 -0
- package/dist/component/jc.avatar.js +26 -0
- package/dist/component/jc.banner.d.ts +81 -0
- package/dist/component/jc.banner.d.ts.map +1 -0
- package/dist/component/jc.banner.js +49 -0
- package/dist/component/jc.bar-chart.d.ts +23 -0
- package/dist/component/jc.bar-chart.d.ts.map +1 -0
- package/dist/component/jc.bar-chart.js +45 -0
- package/dist/component/jc.button.d.ts +20 -0
- package/dist/component/jc.button.d.ts.map +1 -0
- package/dist/component/jc.button.js +39 -0
- package/dist/component/jc.card.abstract.d.ts +14 -0
- package/dist/component/jc.card.abstract.d.ts.map +1 -0
- package/dist/component/jc.card.abstract.js +31 -0
- package/dist/component/jc.card.on-default.d.ts +91 -0
- package/dist/component/jc.card.on-default.d.ts.map +1 -0
- package/dist/component/jc.card.on-default.js +96 -0
- package/dist/component/jc.carousel.d.ts +31 -0
- package/dist/component/jc.carousel.d.ts.map +1 -0
- package/dist/component/jc.carousel.js +58 -0
- package/dist/component/jc.chat-message.d.ts +17 -0
- package/dist/component/jc.chat-message.d.ts.map +1 -0
- package/dist/component/jc.chat-message.js +32 -0
- package/dist/component/jc.chat.d.ts +23 -0
- package/dist/component/jc.chat.d.ts.map +1 -0
- package/dist/component/jc.chat.js +68 -0
- package/dist/component/jc.checkbox.d.ts +15 -0
- package/dist/component/jc.checkbox.d.ts.map +1 -0
- package/dist/component/jc.checkbox.js +38 -0
- package/dist/component/jc.choice-field-item.d.ts +15 -0
- package/dist/component/jc.choice-field-item.d.ts.map +1 -0
- package/dist/component/jc.choice-field-item.js +41 -0
- package/dist/component/jc.choice-field.d.ts +21 -0
- package/dist/component/jc.choice-field.d.ts.map +1 -0
- package/dist/component/jc.choice-field.js +34 -0
- package/dist/component/jc.count-down.d.ts +18 -0
- package/dist/component/jc.count-down.d.ts.map +1 -0
- package/dist/component/jc.count-down.js +55 -0
- package/dist/component/jc.count-up.d.ts +15 -0
- package/dist/component/jc.count-up.d.ts.map +1 -0
- package/dist/component/jc.count-up.js +42 -0
- package/dist/component/jc.custom-component.interop.d.ts +58 -0
- package/dist/component/jc.custom-component.interop.d.ts.map +1 -0
- package/dist/component/jc.custom-component.interop.js +115 -0
- package/dist/component/jc.date-picker.d.ts +15 -0
- package/dist/component/jc.date-picker.d.ts.map +1 -0
- package/dist/component/jc.date-picker.js +31 -0
- package/dist/component/jc.divider.d.ts +7 -0
- package/dist/component/jc.divider.d.ts.map +1 -0
- package/dist/component/jc.divider.js +8 -0
- package/dist/component/jc.dropdown.d.ts +20 -0
- package/dist/component/jc.dropdown.d.ts.map +1 -0
- package/dist/component/jc.dropdown.item.d.ts +22 -0
- package/dist/component/jc.dropdown.item.d.ts.map +1 -0
- package/dist/component/jc.dropdown.item.js +85 -0
- package/dist/component/jc.dropdown.js +33 -0
- package/dist/component/jc.duration-picker.d.ts +18 -0
- package/dist/component/jc.duration-picker.d.ts.map +1 -0
- package/dist/component/jc.duration-picker.js +35 -0
- package/dist/component/jc.email-field.d.ts +11 -0
- package/dist/component/jc.email-field.d.ts.map +1 -0
- package/dist/component/jc.email-field.js +19 -0
- package/dist/component/jc.entity-field.d.ts +23 -0
- package/dist/component/jc.entity-field.d.ts.map +1 -0
- package/dist/component/jc.entity-field.js +71 -0
- package/dist/component/jc.entity.d.ts +15 -0
- package/dist/component/jc.entity.d.ts.map +1 -0
- package/dist/component/jc.entity.js +27 -0
- package/dist/component/jc.event.d.ts +22 -0
- package/dist/component/jc.event.d.ts.map +1 -0
- package/dist/component/jc.event.js +68 -0
- package/dist/component/jc.expander.d.ts +49 -0
- package/dist/component/jc.expander.d.ts.map +1 -0
- package/dist/component/jc.expander.header.d.ts +25 -0
- package/dist/component/jc.expander.header.d.ts.map +1 -0
- package/dist/component/jc.expander.header.js +39 -0
- package/dist/component/jc.expander.js +53 -0
- package/dist/component/jc.field-row.d.ts +34 -0
- package/dist/component/jc.field-row.d.ts.map +1 -0
- package/dist/component/jc.field-row.entity.d.ts +12 -0
- package/dist/component/jc.field-row.entity.d.ts.map +1 -0
- package/dist/component/jc.field-row.entity.js +35 -0
- package/dist/component/jc.field-row.js +37 -0
- package/dist/component/jc.form.d.ts +98 -0
- package/dist/component/jc.form.d.ts.map +1 -0
- package/dist/component/jc.form.js +127 -0
- package/dist/component/jc.gallery-item.d.ts +12 -0
- package/dist/component/jc.gallery-item.d.ts.map +1 -0
- package/dist/component/jc.gallery-item.js +24 -0
- package/dist/component/jc.grid-item.d.ts +15 -0
- package/dist/component/jc.grid-item.d.ts.map +1 -0
- package/dist/component/jc.grid-item.js +31 -0
- package/dist/component/jc.grid.d.ts +16 -0
- package/dist/component/jc.grid.d.ts.map +1 -0
- package/dist/component/jc.grid.js +64 -0
- package/dist/component/jc.guards.d.ts +17 -0
- package/dist/component/jc.guards.d.ts.map +1 -0
- package/dist/component/jc.guards.js +14 -0
- package/dist/component/jc.icon.d.ts +19 -0
- package/dist/component/jc.icon.d.ts.map +1 -0
- package/dist/component/jc.icon.js +41 -0
- package/dist/component/jc.image.abstract.d.ts +28 -0
- package/dist/component/jc.image.abstract.d.ts.map +1 -0
- package/dist/component/jc.image.abstract.js +52 -0
- package/dist/component/jc.image.d.ts +5 -0
- package/dist/component/jc.image.d.ts.map +1 -0
- package/dist/component/jc.image.js +2 -0
- package/dist/component/jc.image.on-carousel.d.ts +23 -0
- package/dist/component/jc.image.on-carousel.d.ts.map +1 -0
- package/dist/component/jc.image.on-carousel.js +19 -0
- package/dist/component/jc.image.on-default.d.ts +25 -0
- package/dist/component/jc.image.on-default.d.ts.map +1 -0
- package/dist/component/jc.image.on-default.js +22 -0
- package/dist/component/jc.interactive-image.d.ts +41 -0
- package/dist/component/jc.interactive-image.d.ts.map +1 -0
- package/dist/component/jc.interactive-image.item.d.ts +24 -0
- package/dist/component/jc.interactive-image.item.d.ts.map +1 -0
- package/dist/component/jc.interactive-image.item.js +78 -0
- package/dist/component/jc.interactive-image.js +78 -0
- package/dist/component/jc.jig-header.d.ts +19 -0
- package/dist/component/jc.jig-header.d.ts.map +1 -0
- package/dist/component/jc.jig-header.js +42 -0
- package/dist/component/jc.jig-widget.d.ts +15 -0
- package/dist/component/jc.jig-widget.d.ts.map +1 -0
- package/dist/component/jc.jig-widget.js +41 -0
- package/dist/component/jc.jig.d.ts +11 -0
- package/dist/component/jc.jig.d.ts.map +1 -0
- package/dist/component/jc.jig.js +24 -0
- package/dist/component/jc.line-chart.d.ts +28 -0
- package/dist/component/jc.line-chart.d.ts.map +1 -0
- package/dist/component/jc.line-chart.js +45 -0
- package/dist/component/jc.list-item.d.ts +106 -0
- package/dist/component/jc.list-item.d.ts.map +1 -0
- package/dist/component/jc.list-item.js +274 -0
- package/dist/component/jc.list-item.standalone.d.ts +13 -0
- package/dist/component/jc.list-item.standalone.d.ts.map +1 -0
- package/dist/component/jc.list-item.standalone.js +10 -0
- package/dist/component/jc.list.abstract.d.ts +36 -0
- package/dist/component/jc.list.abstract.d.ts.map +1 -0
- package/dist/component/jc.list.abstract.js +2 -0
- package/dist/component/jc.list.d.ts +39 -0
- package/dist/component/jc.list.d.ts.map +1 -0
- package/dist/component/jc.list.js +95 -0
- package/dist/component/jc.location.d.ts +41 -0
- package/dist/component/jc.location.d.ts.map +1 -0
- package/dist/component/jc.location.js +63 -0
- package/dist/component/jc.marker-item.d.ts +29 -0
- package/dist/component/jc.marker-item.d.ts.map +1 -0
- package/dist/component/jc.marker-item.js +48 -0
- package/dist/component/jc.media-field.d.ts +13 -0
- package/dist/component/jc.media-field.d.ts.map +1 -0
- package/dist/component/jc.media-field.js +37 -0
- package/dist/component/jc.menu-item.d.ts +89 -0
- package/dist/component/jc.menu-item.d.ts.map +1 -0
- package/dist/component/jc.menu-item.js +65 -0
- package/dist/component/jc.number-field.d.ts +21 -0
- package/dist/component/jc.number-field.d.ts.map +1 -0
- package/dist/component/jc.number-field.js +33 -0
- package/dist/component/jc.pie-chart.d.ts +26 -0
- package/dist/component/jc.pie-chart.d.ts.map +1 -0
- package/dist/component/jc.pie-chart.js +45 -0
- package/dist/component/jc.product-item.amount.d.ts +17 -0
- package/dist/component/jc.product-item.amount.d.ts.map +1 -0
- package/dist/component/jc.product-item.amount.js +31 -0
- package/dist/component/jc.product-item.d.ts +30 -0
- package/dist/component/jc.product-item.d.ts.map +1 -0
- package/dist/component/jc.product-item.js +68 -0
- package/dist/component/jc.progress-bar.d.ts +45 -0
- package/dist/component/jc.progress-bar.d.ts.map +1 -0
- package/dist/component/jc.progress-bar.js +58 -0
- package/dist/component/jc.rating.d.ts +17 -0
- package/dist/component/jc.rating.d.ts.map +1 -0
- package/dist/component/jc.rating.js +38 -0
- package/dist/component/jc.section.abstract.d.ts +87 -0
- package/dist/component/jc.section.abstract.d.ts.map +1 -0
- package/dist/component/jc.section.abstract.js +33 -0
- package/dist/component/jc.section.on-default.d.ts +85 -0
- package/dist/component/jc.section.on-default.d.ts.map +1 -0
- package/dist/component/jc.section.on-default.js +85 -0
- package/dist/component/jc.section.on-entity.d.ts +11 -0
- package/dist/component/jc.section.on-entity.d.ts.map +1 -0
- package/dist/component/jc.section.on-entity.js +11 -0
- package/dist/component/jc.segmented-control.d.ts +23 -0
- package/dist/component/jc.segmented-control.d.ts.map +1 -0
- package/dist/component/jc.segmented-control.js +66 -0
- package/dist/component/jc.signature-field.d.ts +11 -0
- package/dist/component/jc.signature-field.d.ts.map +1 -0
- package/dist/component/jc.signature-field.js +18 -0
- package/dist/component/jc.slider.d.ts +36 -0
- package/dist/component/jc.slider.d.ts.map +1 -0
- package/dist/component/jc.slider.js +53 -0
- package/dist/component/jc.stage.d.ts +23 -0
- package/dist/component/jc.stage.d.ts.map +1 -0
- package/dist/component/jc.stage.js +31 -0
- package/dist/component/jc.step.d.ts +30 -0
- package/dist/component/jc.step.d.ts.map +1 -0
- package/dist/component/jc.step.js +35 -0
- package/dist/component/jc.stepper.d.ts +34 -0
- package/dist/component/jc.stepper.d.ts.map +1 -0
- package/dist/component/jc.stepper.js +59 -0
- package/dist/component/jc.story-group.d.ts +18 -0
- package/dist/component/jc.story-group.d.ts.map +1 -0
- package/dist/component/jc.story-group.js +27 -0
- package/dist/component/jc.summary.abstract.d.ts +15 -0
- package/dist/component/jc.summary.abstract.d.ts.map +1 -0
- package/dist/component/jc.summary.abstract.js +29 -0
- package/dist/component/jc.summary.card.d.ts +14 -0
- package/dist/component/jc.summary.card.d.ts.map +1 -0
- package/dist/component/jc.summary.card.js +36 -0
- package/dist/component/jc.summary.counter.d.ts +12 -0
- package/dist/component/jc.summary.counter.d.ts.map +1 -0
- package/dist/component/jc.summary.counter.js +28 -0
- package/dist/component/jc.summary.default.d.ts +16 -0
- package/dist/component/jc.summary.default.d.ts.map +1 -0
- package/dist/component/jc.summary.default.js +34 -0
- package/dist/component/jc.summary.progress.d.ts +46 -0
- package/dist/component/jc.summary.progress.d.ts.map +1 -0
- package/dist/component/jc.summary.progress.js +35 -0
- package/dist/component/jc.tab-button.d.ts +18 -0
- package/dist/component/jc.tab-button.d.ts.map +1 -0
- package/dist/component/jc.tab-button.js +43 -0
- package/dist/component/jc.text-field.d.ts +20 -0
- package/dist/component/jc.text-field.d.ts.map +1 -0
- package/dist/component/jc.text-field.js +49 -0
- package/dist/component/jc.text.d.ts +24 -0
- package/dist/component/jc.text.d.ts.map +1 -0
- package/dist/component/jc.text.js +44 -0
- package/dist/component/jc.titles.d.ts +19 -0
- package/dist/component/jc.titles.d.ts.map +1 -0
- package/dist/component/jc.titles.js +34 -0
- package/dist/component/jc.trend.d.ts +18 -0
- package/dist/component/jc.trend.d.ts.map +1 -0
- package/dist/component/jc.trend.js +31 -0
- package/dist/component/jc.types.d.ts +75 -0
- package/dist/component/jc.types.d.ts.map +1 -0
- package/dist/component/jc.types.js +74 -0
- package/dist/component/jc.video-player.abstract.d.ts +28 -0
- package/dist/component/jc.video-player.abstract.d.ts.map +1 -0
- package/dist/component/jc.video-player.abstract.js +38 -0
- package/dist/component/jc.video-player.d.ts +4 -0
- package/dist/component/jc.video-player.d.ts.map +1 -0
- package/dist/component/jc.video-player.js +2 -0
- package/dist/component/jc.video-player.on-jig.d.ts +25 -0
- package/dist/component/jc.video-player.on-jig.d.ts.map +1 -0
- package/dist/component/jc.video-player.on-jig.js +31 -0
- package/dist/component/jc.view.d.ts +158 -0
- package/dist/component/jc.view.d.ts.map +1 -0
- package/dist/component/jc.view.js +85 -0
- package/dist/component/jc.web-view.abstract.d.ts +15 -0
- package/dist/component/jc.web-view.abstract.d.ts.map +1 -0
- package/dist/component/jc.web-view.abstract.js +33 -0
- package/dist/component/jc.web-view.on-default.d.ts +5 -0
- package/dist/component/jc.web-view.on-default.d.ts.map +1 -0
- package/dist/component/jc.web-view.on-default.js +4 -0
- package/dist/component/jc.web-view.on-full.d.ts +10 -0
- package/dist/component/jc.web-view.on-full.d.ts.map +1 -0
- package/dist/component/jc.web-view.on-full.js +14 -0
- package/dist/database/database.abstract.d.ts +39 -0
- package/dist/database/database.abstract.d.ts.map +1 -0
- package/dist/database/database.abstract.js +42 -0
- package/dist/database/index.d.ts +2 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +2 -0
- package/dist/datasource/datasource.abstract.d.ts +39 -0
- package/dist/datasource/datasource.abstract.d.ts.map +1 -0
- package/dist/datasource/datasource.abstract.js +47 -0
- package/dist/datasource/datasource.descriptor.d.ts +11 -0
- package/dist/datasource/datasource.descriptor.d.ts.map +1 -0
- package/dist/datasource/datasource.descriptor.js +2 -0
- package/dist/datasource/datasource.reference.d.ts +33 -0
- package/dist/datasource/datasource.reference.d.ts.map +1 -0
- package/dist/datasource/datasource.reference.js +66 -0
- package/dist/datasource/datasource.sdk.d.ts +7 -0
- package/dist/datasource/datasource.sdk.d.ts.map +1 -0
- package/dist/datasource/datasource.sdk.js +5 -0
- package/dist/datasource/datasource.sqlite.d.ts +88 -0
- package/dist/datasource/datasource.sqlite.d.ts.map +1 -0
- package/dist/datasource/datasource.sqlite.js +286 -0
- package/dist/datasource/datasource.static.d.ts +21 -0
- package/dist/datasource/datasource.static.d.ts.map +1 -0
- package/dist/datasource/datasource.static.js +30 -0
- package/dist/datasource/datasource.system.d.ts +18 -0
- package/dist/datasource/datasource.system.d.ts.map +1 -0
- package/dist/datasource/datasource.system.js +10 -0
- package/dist/datasource/entity.descriptor.d.ts +9 -0
- package/dist/datasource/entity.descriptor.d.ts.map +1 -0
- package/dist/datasource/entity.descriptor.js +2 -0
- package/dist/datasource/index.d.ts +11 -0
- package/dist/datasource/index.d.ts.map +1 -0
- package/dist/datasource/index.js +9 -0
- package/dist/datasource/sqlite-normalizer.d.ts +3 -0
- package/dist/datasource/sqlite-normalizer.d.ts.map +1 -0
- package/dist/datasource/sqlite-normalizer.js +194 -0
- package/dist/datasource/sqlite-validator.d.ts +28 -0
- package/dist/datasource/sqlite-validator.d.ts.map +1 -0
- package/dist/datasource/sqlite-validator.js +218 -0
- package/dist/function/function.abstract.d.ts +538 -0
- package/dist/function/function.abstract.d.ts.map +1 -0
- package/dist/function/function.abstract.js +271 -0
- package/dist/function/function.guard.d.ts +17 -0
- package/dist/function/function.guard.d.ts.map +1 -0
- package/dist/function/function.guard.js +62 -0
- package/dist/function/function.operation.d.ts +26 -0
- package/dist/function/function.operation.d.ts.map +1 -0
- package/dist/function/function.operation.js +118 -0
- package/dist/function/function.rest.continuation.d.ts +12 -0
- package/dist/function/function.rest.continuation.d.ts.map +1 -0
- package/dist/function/function.rest.continuation.js +24 -0
- package/dist/function/function.rest.d.ts +31 -0
- package/dist/function/function.rest.d.ts.map +1 -0
- package/dist/function/function.rest.error-builder.d.ts +38 -0
- package/dist/function/function.rest.error-builder.d.ts.map +1 -0
- package/dist/function/function.rest.error-builder.js +161 -0
- package/dist/function/function.rest.js +72 -0
- package/dist/function/function.rest.parameter-builder.d.ts +33 -0
- package/dist/function/function.rest.parameter-builder.d.ts.map +1 -0
- package/dist/function/function.rest.parameter-builder.js +81 -0
- package/dist/function/function.rest.types.d.ts +28 -0
- package/dist/function/function.rest.types.d.ts.map +1 -0
- package/dist/function/function.rest.types.js +2 -0
- package/dist/function/function.sdk.d.ts +10 -0
- package/dist/function/function.sdk.d.ts.map +1 -0
- package/dist/function/function.sdk.js +12 -0
- package/dist/function/function.soap.d.ts +19 -0
- package/dist/function/function.soap.d.ts.map +1 -0
- package/dist/function/function.soap.js +36 -0
- package/dist/function/function.soap.parameter-builder.d.ts +25 -0
- package/dist/function/function.soap.parameter-builder.d.ts.map +1 -0
- package/dist/function/function.soap.parameter-builder.js +41 -0
- package/dist/function/function.soap.types.d.ts +17 -0
- package/dist/function/function.soap.types.d.ts.map +1 -0
- package/dist/function/function.soap.types.js +2 -0
- package/dist/function/function.sql.d.ts +20 -0
- package/dist/function/function.sql.d.ts.map +1 -0
- package/dist/function/function.sql.js +53 -0
- package/dist/function/function.sql.parameter-builder.d.ts +24 -0
- package/dist/function/function.sql.parameter-builder.d.ts.map +1 -0
- package/dist/function/function.sql.parameter-builder.js +44 -0
- package/dist/function/function.sql.types.d.ts +20 -0
- package/dist/function/function.sql.types.d.ts.map +1 -0
- package/dist/function/function.sql.types.js +2 -0
- package/dist/function/function.types.d.ts +7 -0
- package/dist/function/function.types.d.ts.map +1 -0
- package/dist/function/function.types.js +2 -0
- package/dist/function/index.d.ts +17 -0
- package/dist/function/index.d.ts.map +1 -0
- package/dist/function/index.js +13 -0
- package/dist/icon/index.d.ts +3 -0
- package/dist/icon/index.d.ts.map +1 -0
- package/dist/icon/index.js +3 -0
- package/dist/icon/sdk.icon.d.ts +10 -0
- package/dist/icon/sdk.icon.d.ts.map +1 -0
- package/dist/icon/sdk.icon.data.d.ts +7 -0
- package/dist/icon/sdk.icon.data.d.ts.map +1 -0
- package/dist/icon/sdk.icon.data.js +19283 -0
- package/dist/icon/sdk.icon.js +27 -0
- package/dist/icon/sdk.icon.loader.d.ts +7 -0
- package/dist/icon/sdk.icon.loader.d.ts.map +1 -0
- package/dist/icon/sdk.icon.loader.js +15 -0
- package/dist/icon/sdk.icon.name.d.ts +7 -0
- package/dist/icon/sdk.icon.name.d.ts.map +1 -0
- package/dist/icon/sdk.icon.name.js +19305 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/jsonata/ast.d.ts +15 -0
- package/dist/jsonata/ast.d.ts.map +1 -0
- package/dist/jsonata/ast.js +118 -0
- package/dist/jsonata/base.d.ts +7 -0
- package/dist/jsonata/base.d.ts.map +1 -0
- package/dist/jsonata/base.js +43 -0
- package/dist/jsonata/builder.d.ts +28 -0
- package/dist/jsonata/builder.d.ts.map +1 -0
- package/dist/jsonata/builder.js +140 -0
- package/dist/jsonata/context.d.ts +10 -0
- package/dist/jsonata/context.d.ts.map +1 -0
- package/dist/jsonata/context.js +349 -0
- package/dist/jsonata/expression.d.ts +35 -0
- package/dist/jsonata/expression.d.ts.map +1 -0
- package/dist/jsonata/expression.js +498 -0
- package/dist/jsonata/index.d.ts +6 -0
- package/dist/jsonata/index.d.ts.map +1 -0
- package/dist/jsonata/index.js +6 -0
- package/dist/logger/index.d.ts +2 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +2 -0
- package/dist/logger/logger.d.ts +14 -0
- package/dist/logger/logger.d.ts.map +1 -0
- package/dist/logger/logger.js +40 -0
- package/dist/runtime/auth.d.ts +19 -0
- package/dist/runtime/auth.d.ts.map +1 -0
- package/dist/runtime/auth.js +11 -0
- package/dist/runtime/index.d.ts +5 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +3 -0
- package/dist/runtime/system.d.ts +27 -0
- package/dist/runtime/system.d.ts.map +1 -0
- package/dist/runtime/system.js +26 -0
- package/dist/screen/common/index.d.ts +9 -0
- package/dist/screen/common/index.d.ts.map +1 -0
- package/dist/screen/common/index.js +7 -0
- package/dist/screen/common/screen.badge.d.ts +8 -0
- package/dist/screen/common/screen.badge.d.ts.map +1 -0
- package/dist/screen/common/screen.badge.js +2 -0
- package/dist/screen/common/screen.bottom-sheet.d.ts +62 -0
- package/dist/screen/common/screen.bottom-sheet.d.ts.map +1 -0
- package/dist/screen/common/screen.bottom-sheet.js +31 -0
- package/dist/screen/common/screen.callback-actions.d.ts +7 -0
- package/dist/screen/common/screen.callback-actions.d.ts.map +1 -0
- package/dist/screen/common/screen.callback-actions.js +19 -0
- package/dist/screen/common/screen.input-definition.d.ts +108 -0
- package/dist/screen/common/screen.input-definition.d.ts.map +1 -0
- package/dist/screen/common/screen.input-definition.js +109 -0
- package/dist/screen/common/screen.placeholder.d.ts +20 -0
- package/dist/screen/common/screen.placeholder.d.ts.map +1 -0
- package/dist/screen/common/screen.placeholder.js +54 -0
- package/dist/screen/common/screen.preview.actions.d.ts +47 -0
- package/dist/screen/common/screen.preview.actions.d.ts.map +1 -0
- package/dist/screen/common/screen.preview.actions.js +122 -0
- package/dist/screen/common/screen.preview.d.ts +40 -0
- package/dist/screen/common/screen.preview.d.ts.map +1 -0
- package/dist/screen/common/screen.preview.js +87 -0
- package/dist/screen/common/screen.state.d.ts +7 -0
- package/dist/screen/common/screen.state.d.ts.map +1 -0
- package/dist/screen/common/screen.state.js +2 -0
- package/dist/screen/common/screen.summary.d.ts +14 -0
- package/dist/screen/common/screen.summary.d.ts.map +1 -0
- package/dist/screen/common/screen.summary.js +22 -0
- package/dist/screen/index.d.ts +16 -0
- package/dist/screen/index.d.ts.map +1 -0
- package/dist/screen/index.js +16 -0
- package/dist/screen/screen.abstract.d.ts +105 -0
- package/dist/screen/screen.abstract.d.ts.map +1 -0
- package/dist/screen/screen.abstract.js +175 -0
- package/dist/screen/screen.calendar.d.ts +22 -0
- package/dist/screen/screen.calendar.d.ts.map +1 -0
- package/dist/screen/screen.calendar.js +32 -0
- package/dist/screen/screen.default.d.ts +65 -0
- package/dist/screen/screen.default.d.ts.map +1 -0
- package/dist/screen/screen.default.js +68 -0
- package/dist/screen/screen.document.d.ts +58 -0
- package/dist/screen/screen.document.d.ts.map +1 -0
- package/dist/screen/screen.document.js +72 -0
- package/dist/screen/screen.full-screen.d.ts +23 -0
- package/dist/screen/screen.full-screen.d.ts.map +1 -0
- package/dist/screen/screen.full-screen.js +18 -0
- package/dist/screen/screen.gallery.d.ts +15 -0
- package/dist/screen/screen.gallery.d.ts.map +1 -0
- package/dist/screen/screen.gallery.js +14 -0
- package/dist/screen/screen.grid.base.d.ts +18 -0
- package/dist/screen/screen.grid.base.d.ts.map +1 -0
- package/dist/screen/screen.grid.base.js +17 -0
- package/dist/screen/screen.grid.dynamic.d.ts +18 -0
- package/dist/screen/screen.grid.dynamic.d.ts.map +1 -0
- package/dist/screen/screen.grid.dynamic.js +26 -0
- package/dist/screen/screen.grid.static.d.ts +14 -0
- package/dist/screen/screen.grid.static.d.ts.map +1 -0
- package/dist/screen/screen.grid.static.js +12 -0
- package/dist/screen/screen.guards.d.ts +41 -0
- package/dist/screen/screen.guards.d.ts.map +1 -0
- package/dist/screen/screen.guards.js +35 -0
- package/dist/screen/screen.list.d.ts +79 -0
- package/dist/screen/screen.list.d.ts.map +1 -0
- package/dist/screen/screen.list.js +123 -0
- package/dist/screen/screen.sdk.d.ts +13 -0
- package/dist/screen/screen.sdk.d.ts.map +1 -0
- package/dist/screen/screen.sdk.js +9 -0
- package/dist/screen/screen.tabs.d.ts +27 -0
- package/dist/screen/screen.tabs.d.ts.map +1 -0
- package/dist/screen/screen.tabs.instance.d.ts +34 -0
- package/dist/screen/screen.tabs.instance.d.ts.map +1 -0
- package/dist/screen/screen.tabs.instance.js +79 -0
- package/dist/screen/screen.tabs.js +35 -0
- package/dist/screen/screen.wizard.d.ts +12 -0
- package/dist/screen/screen.wizard.d.ts.map +1 -0
- package/dist/screen/screen.wizard.instance.d.ts +20 -0
- package/dist/screen/screen.wizard.instance.d.ts.map +1 -0
- package/dist/screen/screen.wizard.instance.js +40 -0
- package/dist/screen/screen.wizard.js +23 -0
- package/dist/utils/check.d.ts +3 -0
- package/dist/utils/check.d.ts.map +1 -0
- package/dist/utils/check.js +7 -0
- package/dist/utils/convert.d.ts +2 -0
- package/dist/utils/convert.d.ts.map +1 -0
- package/dist/utils/convert.js +8 -0
- package/dist/utils/dedent.d.ts +2 -0
- package/dist/utils/dedent.d.ts.map +1 -0
- package/dist/utils/dedent.js +28 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/types.d.ts +2 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +2 -0
- package/dist/utils/utils.d.ts +9 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +49 -0
- package/dist/widget/index.d.ts +12 -0
- package/dist/widget/index.d.ts.map +1 -0
- package/dist/widget/index.js +12 -0
- package/dist/widget/jw.abstract.d.ts +27 -0
- package/dist/widget/jw.abstract.d.ts.map +1 -0
- package/dist/widget/jw.abstract.js +36 -0
- package/dist/widget/jw.actions.d.ts +17 -0
- package/dist/widget/jw.actions.d.ts.map +1 -0
- package/dist/widget/jw.actions.js +30 -0
- package/dist/widget/jw.avatar.d.ts +19 -0
- package/dist/widget/jw.avatar.d.ts.map +1 -0
- package/dist/widget/jw.avatar.js +23 -0
- package/dist/widget/jw.chart.d.ts +18 -0
- package/dist/widget/jw.chart.d.ts.map +1 -0
- package/dist/widget/jw.chart.js +23 -0
- package/dist/widget/jw.group.d.ts +28 -0
- package/dist/widget/jw.group.d.ts.map +1 -0
- package/dist/widget/jw.group.js +35 -0
- package/dist/widget/jw.image.d.ts +27 -0
- package/dist/widget/jw.image.d.ts.map +1 -0
- package/dist/widget/jw.image.js +54 -0
- package/dist/widget/jw.list.d.ts +44 -0
- package/dist/widget/jw.list.d.ts.map +1 -0
- package/dist/widget/jw.list.js +44 -0
- package/dist/widget/jw.location.d.ts +41 -0
- package/dist/widget/jw.location.d.ts.map +1 -0
- package/dist/widget/jw.location.js +54 -0
- package/dist/widget/jw.sdk.d.ts +2 -0
- package/dist/widget/jw.sdk.d.ts.map +1 -0
- package/dist/widget/jw.sdk.js +2 -0
- package/dist/widget/jw.status.condition.d.ts +20 -0
- package/dist/widget/jw.status.condition.d.ts.map +1 -0
- package/dist/widget/jw.status.condition.js +27 -0
- package/dist/widget/jw.status.d.ts +8 -0
- package/dist/widget/jw.status.d.ts.map +1 -0
- package/dist/widget/jw.status.js +11 -0
- package/dist/widget/jw.value.d.ts +24 -0
- package/dist/widget/jw.value.d.ts.map +1 -0
- package/dist/widget/jw.value.js +51 -0
- package/package.json +94 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { type ApplicationName, BaseBuilder, type BooleanOrExpression, type Category, type Expression } from '../abstract/index.js';
|
|
2
|
+
import { ActionDefinitionBuilder } from '../action/index.js';
|
|
3
|
+
import { DefaultDatabaseBuilder } from '../database/index.js';
|
|
4
|
+
import { SqliteDatasourceBuilder, StaticDatasourceBuilder, SystemDatasourceBuilder } from '../datasource/index.js';
|
|
5
|
+
import { RestFunctionBuilder } from '../function/function.rest.js';
|
|
6
|
+
import { SqlFunctionBuilder } from '../function/function.sql.js';
|
|
7
|
+
import { SoapFunctionBuilder } from '../function/function.soap.js';
|
|
8
|
+
import { type IconName } from '../icon/index.js';
|
|
9
|
+
import { CalendarScreenBuilder, DefaultScreenBuilder, DocumentScreenBuilder, DynamicGridScreenBuilder, FullScreenBuilder, GalleryScreenBuilder, ListScreenBuilder, type ScreenBuilder, StaticGridScreenBuilder, TabsScreenBuilder, WizardScreenBuilder } from '../screen/index.js';
|
|
10
|
+
import { ApplicationTabBuilder } from './application.tab.js';
|
|
11
|
+
export type Application = Record<string, any>;
|
|
12
|
+
export declare const RUNTIME_SCHEMA_VERSION = 7;
|
|
13
|
+
export interface ApplicationInput {
|
|
14
|
+
readonly name: string | ApplicationName;
|
|
15
|
+
readonly title?: string;
|
|
16
|
+
readonly description?: string;
|
|
17
|
+
readonly category?: Category;
|
|
18
|
+
readonly type?: string;
|
|
19
|
+
readonly imageUrl?: string;
|
|
20
|
+
readonly state?: unknown;
|
|
21
|
+
readonly permissions?: unknown;
|
|
22
|
+
readonly dependencies?: unknown;
|
|
23
|
+
readonly profile?: {
|
|
24
|
+
readonly isPersonalInfoMenuItemVisible?: BooleanOrExpression;
|
|
25
|
+
readonly children: unknown[];
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export declare class ApplicationBuilder extends BaseBuilder {
|
|
29
|
+
protected readonly _config: Record<string, unknown>;
|
|
30
|
+
readonly addDatasource: {
|
|
31
|
+
sqlite: (options: import("../datasource/datasource.sqlite.ts").SqliteDatasourceInput) => SqliteDatasourceBuilder;
|
|
32
|
+
static: (options: import("../datasource/datasource.static.ts").StaticDatasourceInput) => StaticDatasourceBuilder;
|
|
33
|
+
system: (options: import("../datasource/datasource.system.ts").SystemDatasourceInput) => SystemDatasourceBuilder;
|
|
34
|
+
};
|
|
35
|
+
readonly addFunction: {
|
|
36
|
+
rest: (options: import("../function/function.rest.js").RestFunctionInput) => RestFunctionBuilder;
|
|
37
|
+
sql: (options: import("../function/function.sql.js").SqlFunctionInput) => SqlFunctionBuilder;
|
|
38
|
+
soap: (options: import("../function/function.soap.js").SoapFunctionInput) => SoapFunctionBuilder;
|
|
39
|
+
};
|
|
40
|
+
readonly addScreen: {
|
|
41
|
+
calendar: (options: import("../screen/screen.abstract.ts").ScreenBaseBuilderInput) => CalendarScreenBuilder;
|
|
42
|
+
default: (options: import("../screen/screen.default.ts").DefaultScreenInput) => DefaultScreenBuilder;
|
|
43
|
+
document: (options: import("../screen/screen.abstract.ts").ScreenBaseBuilderInput) => DocumentScreenBuilder;
|
|
44
|
+
fullScreen: (options: import("../screen/screen.abstract.ts").ScreenBaseBuilderInput) => FullScreenBuilder;
|
|
45
|
+
staticGrid: (options: import("../screen/screen.abstract.ts").ScreenBaseBuilderInput) => StaticGridScreenBuilder;
|
|
46
|
+
dynamicGrid: (options: import("../screen/screen.abstract.ts").ScreenBaseBuilderInput) => DynamicGridScreenBuilder;
|
|
47
|
+
gallery: (options: import("../screen/screen.abstract.ts").ScreenBaseBuilderInput) => GalleryScreenBuilder;
|
|
48
|
+
list: (options: import("../screen/screen.list.ts").ListScreenInput) => ListScreenBuilder;
|
|
49
|
+
tabs: (options: import("../screen/screen.tabs.ts").TabsScreenInput) => TabsScreenBuilder;
|
|
50
|
+
wizard: (options: import("../screen/screen.abstract.ts").ScreenBaseBuilderInput) => WizardScreenBuilder;
|
|
51
|
+
screens: Record<string, ScreenBuilder>;
|
|
52
|
+
};
|
|
53
|
+
readonly addDatabase: {
|
|
54
|
+
default: DefaultDatabaseBuilder;
|
|
55
|
+
};
|
|
56
|
+
constructor(options: ApplicationInput);
|
|
57
|
+
with(options: Partial<Omit<ApplicationInput, 'name'>>): this;
|
|
58
|
+
expression(name: string, jsonata: string | Expression | Record<string, unknown>): this;
|
|
59
|
+
readonly addTab: (options: import("./application.tab.js").ApplicationTabInput) => ApplicationTabBuilder;
|
|
60
|
+
readonly addAction: (options: import("../action/action-definition.builder.ts").ActionDefinitionBuilderInput) => ActionDefinitionBuilder;
|
|
61
|
+
get name(): ApplicationName;
|
|
62
|
+
metadata(key: string, value: unknown): this;
|
|
63
|
+
getStateRef(key: string): string;
|
|
64
|
+
getExpressionRef(name: string): string;
|
|
65
|
+
getExpression(name: string): Expression | Record<string, unknown> | undefined;
|
|
66
|
+
script(name: string, script: unknown): this;
|
|
67
|
+
translation(locale: string, translations: unknown): this;
|
|
68
|
+
onTableChanged(listener: unknown): this;
|
|
69
|
+
themePalette(palette: unknown): this;
|
|
70
|
+
images(...images: string[]): this;
|
|
71
|
+
icons(...icons: IconName[]): this;
|
|
72
|
+
readonly onLoad: import("../action/ja.in-background.factory.js").ActionInBackgroundBuilders;
|
|
73
|
+
readonly onFocus: import("../action/ja.in-background.factory.js").ActionInBackgroundBuilders;
|
|
74
|
+
readonly onRefresh: import("../action/ja.in-background.factory.js").ActionInBackgroundBuilders;
|
|
75
|
+
_validate(): void;
|
|
76
|
+
build(): Application;
|
|
77
|
+
private registerRequiredTables;
|
|
78
|
+
toJSON(options?: {
|
|
79
|
+
indent?: number;
|
|
80
|
+
sortKeys?: boolean;
|
|
81
|
+
}): string;
|
|
82
|
+
toYAML(): string;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uc2RrLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24vYXBwbGljYXRpb24uc2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxLQUFLLGVBQWUsRUFDcEIsV0FBVyxFQUNYLEtBQUssbUJBQW1CLEVBRXhCLEtBQUssUUFBUSxFQUNiLEtBQUssVUFBVSxFQUdoQixNQUFNLHNCQUFzQixDQUFBO0FBQzdCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBRTVELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQzdELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN4QixNQUFNLHdCQUF3QixDQUFBO0FBQy9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFBO0FBQ2hFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBRWxFLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2hELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQix3QkFBd0IsRUFDeEIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsS0FBSyxhQUFhLEVBQ2xCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsbUJBQW1CLEVBQ3BCLE1BQU0sb0JBQW9CLENBQUE7QUFFM0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFPNUQsTUFBTSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBSzdDLGVBQU8sTUFBTSxzQkFBc0IsSUFB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QU1ELE9BQU8sQ0FBQyxzQkFBc0I7SUE0QjlCLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQztRQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtLQUFFLEdBQUcsTUFBTSxDQUtoRTtJQUtELE1BQU0sSUFBSSxNQUFNLENBRWY7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFlBTUwgZnJvbSAneWFtbCdcbmltcG9ydCB7XG4gIHR5cGUgQXBwbGljYXRpb25OYW1lLFxuICBCYXNlQnVpbGRlcixcbiAgdHlwZSBCb29sZWFuT3JFeHByZXNzaW9uLFxuICBidWlsZFRyZWUsXG4gIHR5cGUgQ2F0ZWdvcnksXG4gIHR5cGUgRXhwcmVzc2lvbixcbiAgdG9BcHBsaWNhdGlvbk5hbWUsXG4gIHRvRXhwcmVzc2lvbixcbn0gZnJvbSAnLi4vYWJzdHJhY3QvaW5kZXguanMnXG5pbXBvcnQgeyBBY3Rpb25EZWZpbml0aW9uQnVpbGRlciB9IGZyb20gJy4uL2FjdGlvbi9pbmRleC5qcydcbmltcG9ydCB7IGNyZWF0ZUFjdGlvbkluQmFja2dyb3VuZEJ1aWxkZXJzRmFjdG9yeSB9IGZyb20gJy4uL2FjdGlvbi9qYS5pbi1iYWNrZ3JvdW5kLmZhY3RvcnkuanMnXG5pbXBvcnQgeyBEZWZhdWx0RGF0YWJhc2VCdWlsZGVyIH0gZnJvbSAnLi4vZGF0YWJhc2UvaW5kZXguanMnXG5pbXBvcnQge1xuICBTcWxpdGVEYXRhc291cmNlQnVpbGRlcixcbiAgU3RhdGljRGF0YXNvdXJjZUJ1aWxkZXIsXG4gIFN5c3RlbURhdGFzb3VyY2VCdWlsZGVyLFxufSBmcm9tICcuLi9kYXRhc291cmNlL2luZGV4LmpzJ1xuaW1wb3J0IHsgUmVzdEZ1bmN0aW9uQnVpbGRlciB9IGZyb20gJy4uL2Z1bmN0aW9uL2Z1bmN0aW9uLnJlc3QuanMnXG5pbXBvcnQgeyBTcWxGdW5jdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi9mdW5jdGlvbi9mdW5jdGlvbi5zcWwuanMnXG5pbXBvcnQgeyBTb2FwRnVuY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vZnVuY3Rpb24vZnVuY3Rpb24uc29hcC5qcydcbmltcG9ydCB7IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeSwgY3JlYXRlQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi9hYnN0cmFjdC9zZGsudHlwZXMuanMnXG5pbXBvcnQgeyB0eXBlIEljb25OYW1lIH0gZnJvbSAnLi4vaWNvbi9pbmRleC5qcydcbmltcG9ydCB7XG4gIENhbGVuZGFyU2NyZWVuQnVpbGRlcixcbiAgRGVmYXVsdFNjcmVlbkJ1aWxkZXIsXG4gIERvY3VtZW50U2NyZWVuQnVpbGRlcixcbiAgRHluYW1pY0dyaWRTY3JlZW5CdWlsZGVyLFxuICBGdWxsU2NyZWVuQnVpbGRlcixcbiAgR2FsbGVyeVNjcmVlbkJ1aWxkZXIsXG4gIExpc3RTY3JlZW5CdWlsZGVyLFxuICB0eXBlIFNjcmVlbkJ1aWxkZXIsXG4gIFN0YXRpY0dyaWRTY3JlZW5CdWlsZGVyLFxuICBUYWJzU2NyZWVuQnVpbGRlcixcbiAgV2l6YXJkU2NyZWVuQnVpbGRlcixcbn0gZnJvbSAnLi4vc2NyZWVuL2luZGV4LmpzJ1xuaW1wb3J0IHsgc29ydE9iamVjdCB9IGZyb20gJy4uL3V0aWxzL2luZGV4LmpzJ1xuaW1wb3J0IHsgQXBwbGljYXRpb25UYWJCdWlsZGVyIH0gZnJvbSAnLi9hcHBsaWNhdGlvbi50YWIuanMnXG5cbi8qKlxuICogQnVpbHQgYXBwbGljYXRpb24gb3V0cHV0LiBJbnRlbnRpb25hbGx5IHVuc3RydWN0dXJlZDogYGJ1aWxkVHJlZSgpYCBwcm9kdWNlc1xuICogcGxhaW4gb2JqZWN0cywgc28gbm8gZmllbGQtbGV2ZWwgY29udHJhY3QgaXMgbWFpbnRhaW5lZCBoZXJlLlxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgQXBwbGljYXRpb24gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+XG5cbi8qKlxuICogQ3VycmVudCBydW50aW1lIHNjaGVtYSB2ZXJzaW9uLiBLZWVwIGluIHN5bmMgd2l0aCBtb2JpbGUtcnVudGltZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFJVTlRJTUVfU0NIRU1BX1ZFUlNJT04gPSA3XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbGljYXRpb25JbnB1dCB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZyB8IEFwcGxpY2F0aW9uTmFtZVxuICByZWFkb25seSB0aXRsZT86IHN0cmluZ1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICByZWFkb25seSBjYXRlZ29yeT86IENhdGVnb3J5XG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmdcbiAgcmVhZG9ubHkgaW1hZ2VVcmw/OiBzdHJpbmdcbiAgcmVhZG9ubHkgc3RhdGU/OiB1bmtub3duXG4gIHJlYWRvbmx5IHBlcm1pc3Npb25zPzogdW5rbm93blxuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiB1bmtub3duXG4gIHJlYWRvbmx5IHByb2ZpbGU/OiB7XG4gICAgcmVhZG9ubHkgaXNQZXJzb25hbEluZm9NZW51SXRlbVZpc2libGU/OiBCb29sZWFuT3JFeHByZXNzaW9uXG4gICAgcmVhZG9ubHkgY2hpbGRyZW46IHVua25vd25bXVxuICB9XG59XG5cbi8qKlxuICogQnVpbGQgSmlneCBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9ucy5cbiAqIEBhbGlhcyBTb2x1dGlvbkJ1aWxkZXJcbiAqIENyZWF0ZSBjb21wbGV0ZSBhcHAgcGFja2FnZXMgd2l0aCBzY3JlZW5zLCBkYXRhIHNvdXJjZXMsIGZ1bmN0aW9ucywgYW5kIGRhdGFiYXNlcy5cbiAqIEFwcGxpY2F0aW9ucyBhcHBlYXIgaW4gSmlneCBhcHAgaG9tZSBodWIuXG4gKlxuICogUmVxdWlyZWQ6IG5hbWUgKGxvd2VyY2FzZSwgMi01MCBjaGFycyksIHRpdGxlICh1bmlxdWUpLCBjYXRlZ29yeS5cbiAqIENvbXBvbmVudHM6IGppZ3MsIGRhdGFzb3VyY2VzLCBmdW5jdGlvbnMsIGRhdGFiYXNlcywgdGFicywgZXhwcmVzc2lvbnMsIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbkJ1aWxkZXIgZXh0ZW5kcyBCYXNlQnVpbGRlciB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICBmdW5jdGlvbnM6IHt9LFxuICAgIGRhdGFzb3VyY2VzOiB7fSxcbiAgICBkYXRhYmFzZXM6IHsgZGVmYXVsdDogbmV3IERlZmF1bHREYXRhYmFzZUJ1aWxkZXIoKSB9LFxuICAgIGppZ3M6IHt9LFxuICAgIGFjdGlvbnM6IHt9LFxuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIGRhdGFzb3VyY2VzIGluIEppZ3ggYXBwbGljYXRpb25zLlxuICAgKlxuICAgKiBEYXRhc291cmNlIHR5cGVzOlxuICAgKiAtICoqc3FsaXRlKio6IExvY2FsIGRhdGFiYXNlLCBvcHRpb25hbCBjbG91ZCBzeW5jXG4gICAqIC0gKipzdGF0aWMqKjogRW1iZWRkZWQgSlNPTiBhdCBidWlsZCB0aW1lXG4gICAqIC0gKipzeXN0ZW0qKjogUmVhZC1vbmx5IHN5c3RlbSBkYXRhIChjb3VudHJ5IGZsYWdzKVxuICAgKlxuICAgKiBAc2VlIHtAbGluayBTcWxpdGVEYXRhc291cmNlQnVpbGRlcn1cbiAgICogQHNlZSB7QGxpbmsgU3RhdGljRGF0YXNvdXJjZUJ1aWxkZXJ9XG4gICAqIEBzZWUge0BsaW5rIFN5c3RlbURhdGFzb3VyY2VCdWlsZGVyfVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkRGF0YXNvdXJjZSA9IHtcbiAgICBzcWxpdGU6IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeShcbiAgICAgIFNxbGl0ZURhdGFzb3VyY2VCdWlsZGVyLFxuICAgICAgJ2RhdGFzb3VyY2VJZCcsXG4gICAgICB0aGlzLl9jb25maWcuZGF0YXNvdXJjZXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICBzdGF0aWM6IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeShcbiAgICAgIFN0YXRpY0RhdGFzb3VyY2VCdWlsZGVyLFxuICAgICAgJ2RhdGFzb3VyY2VJZCcsXG4gICAgICB0aGlzLl9jb25maWcuZGF0YXNvdXJjZXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICBzeXN0ZW06IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeShcbiAgICAgIFN5c3RlbURhdGFzb3VyY2VCdWlsZGVyLFxuICAgICAgJ2RhdGFzb3VyY2VJZCcsXG4gICAgICB0aGlzLl9jb25maWcuZGF0YXNvdXJjZXMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciBjcmVhdGluZyBmdW5jdGlvbnMgaW4gSmlneCBhcHBsaWNhdGlvbnMuXG4gICAqXG4gICAqIEZ1bmN0aW9uIHR5cGVzOlxuICAgKiAtICoqcmVzdCoqOiBIVFRQIEFQSSBjYWxscywgSlNPTi9YTUwsIGF1dGgsIHBhZ2luYXRpb25cbiAgICogLSAqKnNxbCoqOiBBenVyZSBTUUwgcXVlcmllcywgc3RvcmVkIHByb2NlZHVyZXNcbiAgICogLSAqKnNvYXAqKjogWE1MIHdlYiBzZXJ2aWNlcywgV1NETC1iYXNlZFxuICAgKlxuICAgKiBAc2VlIHtAbGluayBSZXN0RnVuY3Rpb25CdWlsZGVyfVxuICAgKiBAc2VlIHtAbGluayBTcWxGdW5jdGlvbkJ1aWxkZXJ9XG4gICAqIEBzZWUge0BsaW5rIFNvYXBGdW5jdGlvbkJ1aWxkZXJ9XG4gICAqL1xuICByZWFkb25seSBhZGRGdW5jdGlvbiA9IHtcbiAgICByZXN0OiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBSZXN0RnVuY3Rpb25CdWlsZGVyLFxuICAgICAgJ2Z1bmN0aW9uSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmZ1bmN0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApLFxuICAgIHNxbDogYXNzaWduQnVpbGRlckJ5SW5wdXRGYWN0b3J5KFxuICAgICAgU3FsRnVuY3Rpb25CdWlsZGVyLFxuICAgICAgJ2Z1bmN0aW9uSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmZ1bmN0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApLFxuICAgIHNvYXA6IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeShcbiAgICAgIFNvYXBGdW5jdGlvbkJ1aWxkZXIsXG4gICAgICAnZnVuY3Rpb25JZCcsXG4gICAgICB0aGlzLl9jb25maWcuZnVuY3Rpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICksXG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSBmb3IgY3JlYXRpbmcgc2NyZWVucyAoamlncykgaW4gSmlneCBhcHBsaWNhdGlvbnMuXG4gICAqXG4gICAqIFNjcmVlbiB0eXBlczpcbiAgICogLSAqKmxpc3QqKjogU2Nyb2xsYWJsZSBsaXN0cy4gVGVtcGxhdGVzLCBzZWN0aW9ucywgc2VhcmNoXG4gICAqIC0gKipzdGF0aWNHcmlkKio6IFN0YXRpYyByZXNwb25zaXZlIGdyaWRzXG4gICAqIC0gKipkeW5hbWljR3JpZCoqOiBEYXRhLWRyaXZlbiByZXNwb25zaXZlIGdyaWRzXG4gICAqIC0gKipkZWZhdWx0Kio6IEZvcm1zLCBtaXhlZCBjb250ZW50IGNvbnRhaW5lclxuICAgKiAtICoqY2FsZW5kYXIqKjogRXZlbnRzLiBNb250aC93ZWVrL2RheSB2aWV3c1xuICAgKiAtICoqZG9jdW1lbnQqKjogUERGL0hUTUwgdmlld2VyLiBab29tLCBkb3dubG9hZFxuICAgKiAtICoqZnVsbFNjcmVlbioqOiBNYXBzLCBjaGF0LCBpbW1lcnNpdmUgVUlcbiAgICogLSAqKnRhYnMqKjogVGFiIG5hdmlnYXRpb24gYmV0d2VlbiBzY3JlZW5zXG4gICAqIC0gKip3aXphcmQqKjogTXVsdGktc3RlcCB3b3JrZmxvd3NcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgTGlzdFNjcmVlbkJ1aWxkZXJ9XG4gICAqIEBzZWUge0BsaW5rIFN0YXRpY0dyaWRTY3JlZW5CdWlsZGVyfVxuICAgKiBAc2VlIHtAbGluayBEeW5hbWljR3JpZFNjcmVlbkJ1aWxkZXJ9XG4gICAqIEBzZWUge0BsaW5rIERlZmF1bHRTY3JlZW5CdWlsZGVyfVxuICAgKiBAc2VlIHtAbGluayBDYWxlbmRhclNjcmVlbkJ1aWxkZXJ9XG4gICAqIEBzZWUge0BsaW5rIERvY3VtZW50U2NyZWVuQnVpbGRlcn1cbiAgICogQHNlZSB7QGxpbmsgRnVsbFNjcmVlbkJ1aWxkZXJ9XG4gICAqIEBzZWUge0BsaW5rIFRhYnNTY3JlZW5CdWlsZGVyfVxuICAgKiBAc2VlIHtAbGluayBXaXphcmRTY3JlZW5CdWlsZGVyfVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkU2NyZWVuID0ge1xuICAgIGNhbGVuZGFyOiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBDYWxlbmRhclNjcmVlbkJ1aWxkZXIsXG4gICAgICAnc2NyZWVuSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmppZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICBkZWZhdWx0OiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBEZWZhdWx0U2NyZWVuQnVpbGRlcixcbiAgICAgICdzY3JlZW5JZCcsXG4gICAgICB0aGlzLl9jb25maWcuamlncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApLFxuICAgIGRvY3VtZW50OiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBEb2N1bWVudFNjcmVlbkJ1aWxkZXIsXG4gICAgICAnc2NyZWVuSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmppZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICBmdWxsU2NyZWVuOiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBGdWxsU2NyZWVuQnVpbGRlcixcbiAgICAgICdzY3JlZW5JZCcsXG4gICAgICB0aGlzLl9jb25maWcuamlncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApLFxuICAgIHN0YXRpY0dyaWQ6IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeShcbiAgICAgIFN0YXRpY0dyaWRTY3JlZW5CdWlsZGVyLFxuICAgICAgJ3NjcmVlbklkJyxcbiAgICAgIHRoaXMuX2NvbmZpZy5qaWdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICksXG4gICAgZHluYW1pY0dyaWQ6IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeShcbiAgICAgIER5bmFtaWNHcmlkU2NyZWVuQnVpbGRlcixcbiAgICAgICdzY3JlZW5JZCcsXG4gICAgICB0aGlzLl9jb25maWcuamlncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApLFxuICAgIGdhbGxlcnk6IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeShcbiAgICAgIEdhbGxlcnlTY3JlZW5CdWlsZGVyLFxuICAgICAgJ3NjcmVlbklkJyxcbiAgICAgIHRoaXMuX2NvbmZpZy5qaWdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICksXG4gICAgbGlzdDogYXNzaWduQnVpbGRlckJ5SW5wdXRGYWN0b3J5KFxuICAgICAgTGlzdFNjcmVlbkJ1aWxkZXIsXG4gICAgICAnc2NyZWVuSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmppZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICB0YWJzOiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBUYWJzU2NyZWVuQnVpbGRlcixcbiAgICAgICdzY3JlZW5JZCcsXG4gICAgICB0aGlzLl9jb25maWcuamlncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApLFxuICAgIHdpemFyZDogYXNzaWduQnVpbGRlckJ5SW5wdXRGYWN0b3J5KFxuICAgICAgV2l6YXJkU2NyZWVuQnVpbGRlcixcbiAgICAgICdzY3JlZW5JZCcsXG4gICAgICB0aGlzLl9jb25maWcuamlncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApLFxuICAgIHNjcmVlbnM6IHRoaXMuX2NvbmZpZy5qaWdzIGFzIFJlY29yZDxzdHJpbmcsIFNjcmVlbkJ1aWxkZXI+LFxuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgZm9yIGNvbmZpZ3VyaW5nIHRoZSBhcHBsaWNhdGlvbidzIGxvY2FsIFNRTGl0ZSBkYXRhYmFzZS5cbiAgICpcbiAgICogRXZlcnkgYXBwbGljYXRpb24gaGFzIGEgZGVmYXVsdCBkYXRhYmFzZSBmb3Igc3RvcmluZyBsb2NhbCBkYXRhLlxuICAgKiBVc2UgdGhpcyB0byBkZWZpbmUgdGFibGVzIHRoYXQgd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuXG4gICAqL1xuICByZWFkb25seSBhZGREYXRhYmFzZSA9IHtcbiAgICBkZWZhdWx0OiAodGhpcy5fY29uZmlnLmRhdGFiYXNlcyBhcyB7IGRlZmF1bHQ6IERlZmF1bHREYXRhYmFzZUJ1aWxkZXIgfSkuZGVmYXVsdCxcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYXBwbGljYXRpb24gYnVpbGRlciB3aXRoIHZhbGlkYXRlZCBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucy5uYW1lIC0gVW5pcXVlIGlkZW50aWZpZXIuIExvd2VyY2FzZSAyLTUwLCBwcmVmZXIga2ViYWItY2FzZSwgc3RhcnRzIGFscGhhLCBlbmRzIGFscGhhbnVtLlxuICAgKiBAcGFyYW0gb3B0aW9ucy50aXRsZSAtIERpc3BsYXkgdGl0bGUgc2hvd24gaW4gSmlneCBob21lIGh1YiAoZGVmYXVsdHMgdG8gbmFtZSlcbiAgICogQHBhcmFtIG9wdGlvbnMuZGVzY3JpcHRpb24gLSBFeHBsYWlucyBhcHBsaWNhdGlvbiBwdXJwb3NlXG4gICAqIEBwYXJhbSBvcHRpb25zLmNhdGVnb3J5IC0gQ2xhc3NpZmljYXRpb24gZm9yIG9yZ2FuaXppbmcgc29sdXRpb25zIChkZWZhdWx0cyB0byAnbWlzY2VsbGFuZW91cycpXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBXaGVuIG5hbWUgZG9lc24ndCBtYXRjaCByZXF1aXJlZCBwYXR0ZXJuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBBcHBsaWNhdGlvbklucHV0KSB7XG4gICAgc3VwZXIoKVxuICAgIGNvbnN0IHsgbmFtZSB9ID0gb3B0aW9uc1xuICAgIHRoaXMuX2NvbmZpZy5uYW1lID0gdG9BcHBsaWNhdGlvbk5hbWUobmFtZSlcbiAgICB0aGlzLl9jb25maWcudGl0bGUgPSBvcHRpb25zLnRpdGxlIHx8IG5hbWVcbiAgICB0aGlzLl9jb25maWcuY2F0ZWdvcnkgPSAnbWlzY2VsbGFuZW91cydcbiAgICB0aGlzLl9jb25maWcucnVudGltZVNjaGVtYVZlcnNpb24gPSBSVU5USU1FX1NDSEVNQV9WRVJTSU9OXG4gICAgdGhpcy53aXRoKG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZmllbGRzLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFBhcnRpYWwgYXBwbGljYXRpb24gaW5wdXQgKG5hbWUgaXMgZXhjbHVkZWQsIHNldCBvbmx5IGluIGNvbnN0cnVjdG9yKVxuICAgKi9cbiAgd2l0aChvcHRpb25zOiBQYXJ0aWFsPE9taXQ8QXBwbGljYXRpb25JbnB1dCwgJ25hbWUnPj4pOiB0aGlzIHtcbiAgICBpZiAob3B0aW9ucy50aXRsZSAhPT0gdW5kZWZpbmVkKSB0aGlzLl9jb25maWcudGl0bGUgPSBvcHRpb25zLnRpdGxlXG4gICAgaWYgKG9wdGlvbnMuZGVzY3JpcHRpb24gIT09IHVuZGVmaW5lZCkgdGhpcy5fY29uZmlnLmRlc2NyaXB0aW9uID0gb3B0aW9ucy5kZXNjcmlwdGlvblxuICAgIGlmIChvcHRpb25zLmNhdGVnb3J5ICE9PSB1bmRlZmluZWQpIHRoaXMuX2NvbmZpZy5jYXRlZ29yeSA9IG9wdGlvbnMuY2F0ZWdvcnlcbiAgICBpZiAob3B0aW9ucy50eXBlICE9PSB1bmRlZmluZWQpIHRoaXMuX2NvbmZpZy50eXBlID0gb3B0aW9ucy50eXBlXG4gICAgaWYgKG9wdGlvbnMuaW1hZ2VVcmwgIT09IHVuZGVmaW5lZCkgdGhpcy5fY29uZmlnLmltYWdlVXJsID0gb3B0aW9ucy5pbWFnZVVybFxuICAgIGlmIChvcHRpb25zLnN0YXRlICE9PSB1bmRlZmluZWQpIHRoaXMuX2NvbmZpZy5zdGF0ZSA9IG9wdGlvbnMuc3RhdGVcbiAgICBpZiAob3B0aW9ucy5wZXJtaXNzaW9ucyAhPT0gdW5kZWZpbmVkKSB0aGlzLl9jb25maWcucGVybWlzc2lvbnMgPSBvcHRpb25zLnBlcm1pc3Npb25zXG4gICAgaWYgKG9wdGlvbnMuZGVwZW5kZW5jaWVzICE9PSB1bmRlZmluZWQpIHRoaXMuX2NvbmZpZy5kZXBlbmRlbmNpZXMgPSBvcHRpb25zLmRlcGVuZGVuY2llc1xuICAgIGlmIChvcHRpb25zLnByb2ZpbGUgIT09IHVuZGVmaW5lZCkgdGhpcy5fY29uZmlnLnByb2ZpbGUgPSBvcHRpb25zLnByb2ZpbGVcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHJldXNhYmxlIEpTT05hdGEgZXhwcmVzc2lvbiB0byB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEV4cHJlc3Npb25zIGNhbiBiZSByZWZlcmVuY2VkIHRocm91Z2hvdXQgdGhlIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBzeW50YXhcbiAgICogYD1AY3R4LnNvbHV0aW9uLmV4cHJlc3Npb25zLntuYW1lfWAuIFRoaXMgcHJvbW90ZXMgY29kZSByZXVzZSBhbmRcbiAgICogbWFpbnRhaW5hYmlsaXR5LlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIEV4cHJlc3Npb24gaWRlbnRpZmllclxuICAgKiBAcGFyYW0ganNvbmF0YSAtIEpTT05hdGEgZXhwcmVzc2lvbiAod2l0aCBvciB3aXRob3V0IGxlYWRpbmcgPSlcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGZvciBjaGFpbmluZ1xuICAgKi9cbiAgZXhwcmVzc2lvbihuYW1lOiBzdHJpbmcsIGpzb25hdGE6IHN0cmluZyB8IEV4cHJlc3Npb24gfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHRoaXMge1xuICAgIGlmICghdGhpcy5fY29uZmlnLmV4cHJlc3Npb25zKSB0aGlzLl9jb25maWcuZXhwcmVzc2lvbnMgPSB7fVxuICAgIGNvbnN0IGV4cHJlc3Npb25zID0gdGhpcy5fY29uZmlnLmV4cHJlc3Npb25zIGFzIFJlY29yZDxcbiAgICAgIHN0cmluZyxcbiAgICAgIEV4cHJlc3Npb24gfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgID5cbiAgICBpZiAodHlwZW9mIGpzb25hdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICBleHByZXNzaW9uc1tuYW1lXSA9IGpzb25hdGFcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwcmVzc2lvbnNbbmFtZV0gPSB0b0V4cHJlc3Npb24oanNvbmF0YSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgaG9tZSBzY3JlZW4gdGFicyBmb3Igb3JnYW5pemluZyBjb250ZW50LlxuICAgKlxuICAgKiBUYWJzIHByb3ZpZGUgbmF2aWdhdGlvbiBhdCB0aGUgdG9wIG9mIHRoZSBhcHBsaWNhdGlvbidzIGhvbWUgc2NyZWVuLlxuICAgKiBUaGlzIGlzIHRoZSBtb2Rlcm4gcmVwbGFjZW1lbnQgZm9yIHRoZSBkZXByZWNhdGVkIHdpZGdldHMgYXBwcm9hY2guXG4gICAqXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGFiIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnMuc2NyZWVuSWQgLSBTY3JlZW4gdG8gbmF2aWdhdGUgdG8gd2hlbiBzZWxlY3RlZFxuICAgKiBAcGFyYW0gb3B0aW9ucy5pY29uIC0gSWNvbiBuYW1lIG9yIGV4cHJlc3Npb25cbiAgICogQHBhcmFtIG9wdGlvbnMudGFiSWQgLSBPcHRpb25hbCB0YWIga2V5LiBEZWZhdWx0cyB0byBgc2NyZWVuSWRgLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCAtIE9wdGlvbmFsIGxhYmVsIHRleHRcbiAgICogQHBhcmFtIG9wdGlvbnMuYmFkZ2UgLSBPcHRpb25hbCBiYWRnZSBpbmRpY2F0b3JcbiAgICogQHBhcmFtIG9wdGlvbnMud2hlbiAtIE9wdGlvbmFsIHZpc2liaWxpdHkgY29uZGl0aW9uXG4gICAqL1xuICByZWFkb25seSBhZGRUYWIgPSBjcmVhdGVCdWlsZGVyRmFjdG9yeShBcHBsaWNhdGlvblRhYkJ1aWxkZXIsIChidWlsZGVyKSA9PiB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcudGFicykgdGhpcy5fY29uZmlnLnRhYnMgPSB7fVxuICAgIDsodGhpcy5fY29uZmlnLnRhYnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2J1aWxkZXIudGFiSWRdID0gYnVpbGRlclxuICB9KVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgKipnbG9iYWwqKiBhY3Rpb24gZGVmaW5pdGlvbiByZXVzYWJsZSBhY3Jvc3Mgamlncy5cbiAgICogQWN0aW9ucyBjcmVhdGVkIGhlcmUgY2FuIGJlIHJlZmVyZW5jZWQgdGhyb3VnaG91dCB0aGUgYXBwbGljYXRpb24uXG4gICAqL1xuICByZWFkb25seSBhZGRBY3Rpb24gPSBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgQWN0aW9uRGVmaW5pdGlvbkJ1aWxkZXIsXG4gICAgJ2FjdGlvbklkJyxcbiAgICB0aGlzLl9jb25maWcuYWN0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgKVxuXG4gIC8qKlxuICAgKiBDb25zaWRlciB1c2luZyBAY3R4LnNvbHV0aW9uLm5hbWUgaW5zdGVhZC5cbiAgICovXG4gIGdldCBuYW1lKCk6IEFwcGxpY2F0aW9uTmFtZSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbmZpZy5uYW1lIGFzIEFwcGxpY2F0aW9uTmFtZVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBtZXRhZGF0YVxuICAgKi9cbiAgbWV0YWRhdGEoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdGhpcyB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcubWV0YWRhdGEpIHRoaXMuX2NvbmZpZy5tZXRhZGF0YSA9IHt9XG4gICAgOyh0aGlzLl9jb25maWcubWV0YWRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0gPSB2YWx1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBnZXRTdGF0ZVJlZihrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogdmFsaWRhdGUga2V5LCAgaG93P1xuICAgIHJldHVybiBgQGN0eC5zb2x1dGlvbi5zdGF0ZS4ke2tleX1gXG4gIH1cblxuICBnZXRFeHByZXNzaW9uUmVmKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogdmFsaWRhdGUgbmFtZSwgaG93P1xuICAgIHJldHVybiBgQGN0eC5leHByZXNzaW9ucy4ke25hbWV9YFxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHJlZ2lzdGVyZWQgZXhwcmVzc2lvbiB2YWx1ZSBieSBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSAtIEV4cHJlc3Npb24gaWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBUaGUgZXhwcmVzc2lvbiB2YWx1ZSwgb3IgdW5kZWZpbmVkIGlmIG5vdCByZWdpc3RlcmVkXG4gICAqL1xuICBnZXRFeHByZXNzaW9uKG5hbWU6IHN0cmluZyk6IEV4cHJlc3Npb24gfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZXhwcmVzc2lvbnMgPSB0aGlzLl9jb25maWcuZXhwcmVzc2lvbnMgYXNcbiAgICAgIHwgUmVjb3JkPHN0cmluZywgRXhwcmVzc2lvbiB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+PlxuICAgICAgfCB1bmRlZmluZWRcbiAgICByZXR1cm4gZXhwcmVzc2lvbnM/LltuYW1lXVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBjdXN0b20gc2NyaXB0IChyZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSlcbiAgICogQHBhcmFtIG5hbWUgLSBTY3JpcHQgbmFtZS9pZGVudGlmaWVyXG4gICAqIEBwYXJhbSBzY3JpcHQgLSBTY3JpcHQgY29udGVudCBvciBjb25maWd1cmF0aW9uXG4gICAqL1xuICBzY3JpcHQobmFtZTogc3RyaW5nLCBzY3JpcHQ6IHVua25vd24pOiB0aGlzIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5zY3JpcHRzKSB0aGlzLl9jb25maWcuc2NyaXB0cyA9IHt9XG4gICAgOyh0aGlzLl9jb25maWcuc2NyaXB0cyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbbmFtZV0gPSBzY3JpcHRcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBpbnRlcm5hdGlvbmFsaXphdGlvbiB0cmFuc2xhdGlvblxuICAgKiBAcGFyYW0gbG9jYWxlIC0gTG9jYWxlIGlkZW50aWZpZXIgKGUuZy4sICdlbicsICdlcycsICdmcicpXG4gICAqIEBwYXJhbSB0cmFuc2xhdGlvbnMgLSBUcmFuc2xhdGlvbiBrZXktdmFsdWUgcGFpcnNcbiAgICovXG4gIHRyYW5zbGF0aW9uKGxvY2FsZTogc3RyaW5nLCB0cmFuc2xhdGlvbnM6IHVua25vd24pOiB0aGlzIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy50cmFuc2xhdGlvbnMpIHRoaXMuX2NvbmZpZy50cmFuc2xhdGlvbnMgPSB7fVxuICAgIDsodGhpcy5fY29uZmlnLnRyYW5zbGF0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbbG9jYWxlXSA9IHRyYW5zbGF0aW9uc1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQWRkIGRhdGFiYXNlIHRhYmxlIGNoYW5nZSBsaXN0ZW5lclxuICAgKiBAcGFyYW0gbGlzdGVuZXIgLSBUYWJsZSBjaGFuZ2UgbGlzdGVuZXIgY29uZmlndXJhdGlvblxuICAgKi9cbiAgb25UYWJsZUNoYW5nZWQobGlzdGVuZXI6IHVua25vd24pOiB0aGlzIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5vblRhYmxlQ2hhbmdlZCkgdGhpcy5fY29uZmlnLm9uVGFibGVDaGFuZ2VkID0gW11cbiAgICA7KHRoaXMuX2NvbmZpZy5vblRhYmxlQ2hhbmdlZCBhcyB1bmtub3duW10pLnB1c2gobGlzdGVuZXIpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgdGhlbWUgcGFsZXR0ZSBmb3IgdGhlIGFwcGxpY2F0aW9uXG4gICAqIEBwYXJhbSBwYWxldHRlIC0gQ29sb3IgcGFsZXR0ZSBkZWZpbml0aW9uXG4gICAqL1xuICB0aGVtZVBhbGV0dGUocGFsZXR0ZTogdW5rbm93bik6IHRoaXMge1xuICAgIGlmICghdGhpcy5fY29uZmlnLmFzc2V0cykgdGhpcy5fY29uZmlnLmFzc2V0cyA9IHt9XG4gICAgY29uc3QgYXNzZXRzID0gdGhpcy5fY29uZmlnLmFzc2V0cyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgIGlmICghYXNzZXRzLnRoZW1lKSBhc3NldHMudGhlbWUgPSB7fVxuICAgIDsoYXNzZXRzLnRoZW1lIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5wYWxldHRlID0gcGFsZXR0ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQWRkIGltYWdlIFVSTHMgdG8gdGhlIGFwcGxpY2F0aW9uIGFzc2V0c1xuICAgKiBAcGFyYW0gaW1hZ2VzIC0gQXJyYXkgb2YgaW1hZ2UgVVJMc1xuICAgKi9cbiAgaW1hZ2VzKC4uLmltYWdlczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5hc3NldHMpIHRoaXMuX2NvbmZpZy5hc3NldHMgPSB7fVxuICAgIGNvbnN0IGFzc2V0cyA9IHRoaXMuX2NvbmZpZy5hc3NldHMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBpZiAoIWFzc2V0cy5pbWFnZXMpIGFzc2V0cy5pbWFnZXMgPSBbXVxuICAgIDsoYXNzZXRzLmltYWdlcyBhcyBzdHJpbmdbXSkucHVzaCguLi5pbWFnZXMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgaWNvbiByZWZlcmVuY2VzIHRvIHRoZSBhcHBsaWNhdGlvbiBhc3NldHNcbiAgICogQHBhcmFtIGljb25zIC0gQXJyYXkgb2YgaWNvbiBuYW1lc1xuICAgKi9cbiAgaWNvbnMoLi4uaWNvbnM6IEljb25OYW1lW10pOiB0aGlzIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5hc3NldHMpIHRoaXMuX2NvbmZpZy5hc3NldHMgPSB7fVxuICAgIGNvbnN0IGFzc2V0cyA9IHRoaXMuX2NvbmZpZy5hc3NldHMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBpZiAoIWFzc2V0cy5pY29ucykgYXNzZXRzLmljb25zID0gW11cbiAgICA7KGFzc2V0cy5pY29ucyBhcyBJY29uTmFtZVtdKS5wdXNoKC4uLmljb25zKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQWN0aW9uIGV4ZWN1dGVkIHdoZW4gYXBwbGljYXRpb24gbG9hZHMuXG4gICAqL1xuICByZWFkb25seSBvbkxvYWQgPSBjcmVhdGVBY3Rpb25JbkJhY2tncm91bmRCdWlsZGVyc0ZhY3RvcnkoKGFjdGlvbikgPT4ge1xuICAgIHRoaXMuX2NvbmZpZy5vbkxvYWQgPSBhY3Rpb25cbiAgfSlcblxuICAvKipcbiAgICogQWN0aW9uIGV4ZWN1dGVkIHdoZW4gYXBwbGljYXRpb24gZ2FpbnMgZm9jdXMuXG4gICAqL1xuICByZWFkb25seSBvbkZvY3VzID0gY3JlYXRlQWN0aW9uSW5CYWNrZ3JvdW5kQnVpbGRlcnNGYWN0b3J5KChhY3Rpb24pID0+IHtcbiAgICB0aGlzLl9jb25maWcub25Gb2N1cyA9IGFjdGlvblxuICB9KVxuXG4gIC8qKlxuICAgKiBBY3Rpb24gZXhlY3V0ZWQgb24gcHVsbC10by1yZWZyZXNoLlxuICAgKi9cbiAgcmVhZG9ubHkgb25SZWZyZXNoID0gY3JlYXRlQWN0aW9uSW5CYWNrZ3JvdW5kQnVpbGRlcnNGYWN0b3J5KChhY3Rpb24pID0+IHtcbiAgICB0aGlzLl9jb25maWcub25SZWZyZXNoID0gYWN0aW9uXG4gIH0pXG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBhbGwgc2NyZWVucy5cbiAgICpcbiAgICogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYnVpbGQoKSB0byBlbnN1cmUgdGhlIGFwcGxpY2F0aW9uXG4gICAqIGNvbmZpZ3VyYXRpb24gaXMgdmFsaWQuIEl0IGl0ZXJhdGVzIHRocm91Z2ggYWxsIHNjcmVlbnMgYW5kIGNhbGxzIHRoZWlyXG4gICAqIF92YWxpZGF0ZSgpIG1ldGhvZHMuXG4gICAqXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBXaGVuIHZhbGlkYXRpb24gZmFpbHNcbiAgICovXG4gIF92YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzY3JlZW5zID0gdGhpcy5fY29uZmlnLmppZ3MgYXMgUmVjb3JkPHN0cmluZywgU2NyZWVuQnVpbGRlcj5cbiAgICBmb3IgKGNvbnN0IHNjcmVlbiBvZiBPYmplY3QudmFsdWVzKHNjcmVlbnMpKSB7XG4gICAgICBzY3JlZW4uX3ZhbGlkYXRlKClcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiB0aGUgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGJ1aWxkKCk6IEFwcGxpY2F0aW9uIHtcbiAgICB0aGlzLl92YWxpZGF0ZSgpXG5cbiAgICAvLyBSZWdpc3RlciBkeW5hbWljIHRhYmxlcyBvbiBkZWZhdWx0IGRhdGFiYXNlIGJlZm9yZSBidWlsZGluZ1xuICAgIHRoaXMucmVnaXN0ZXJSZXF1aXJlZFRhYmxlcygpXG5cbiAgICAvLyBFeHRyYWN0IHNjcmlwdHMgZm9yIHNwZWNpYWwgdHJhbnNmb3JtYXRpb24gKHNjcmlwdHMgLT4geyBleHByZXNzaW9uczogc2NyaXB0cyB9KVxuICAgIGNvbnN0IHsgc2NyaXB0cywgLi4uY29uZmlnUmVzdCB9ID0gdGhpcy5fY29uZmlnXG4gICAgY29uc3Qgc2NyaXB0T3V0cHV0ID1cbiAgICAgIHNjcmlwdHMgJiYgT2JqZWN0LmtleXMoc2NyaXB0cyBhcyBvYmplY3QpLmxlbmd0aCA+IDBcbiAgICAgICAgPyB7IGV4cHJlc3Npb25zOiB7IC4uLihzY3JpcHRzIGFzIG9iamVjdCkgfSB9XG4gICAgICAgIDogdW5kZWZpbmVkXG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uYnVpbGRUcmVlKGNvbmZpZ1Jlc3QpLFxuICAgICAgLi4uKHNjcmlwdE91dHB1dCA/IHsgc2NyaXB0czogc2NyaXB0T3V0cHV0IH0gOiB7fSksXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNjYW4gYWxsIGRhdGFzb3VyY2VzIChhcHAtbGV2ZWwgYW5kIHNjcmVlbi1sZXZlbCkgZm9yIGR5bmFtaWMgc3FsaXRlXG4gICAqIGVudGl0aWVzIGFuZCByZWdpc3RlciB0aGVpciByZXF1aXJlZCB0YWJsZXMgb24gdGhlIGRlZmF1bHQgZGF0YWJhc2UuXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyUmVxdWlyZWRUYWJsZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZGIgPSB0aGlzLmFkZERhdGFiYXNlLmRlZmF1bHRcblxuICAgIGNvbnN0IHJlZ2lzdGVyRnJvbURhdGFzb3VyY2VzID0gKGRhdGFzb3VyY2VzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBkcyBvZiBPYmplY3QudmFsdWVzKGRhdGFzb3VyY2VzKSkge1xuICAgICAgICBpZiAoZHMgaW5zdGFuY2VvZiBTcWxpdGVEYXRhc291cmNlQnVpbGRlcikge1xuICAgICAgICAgIGZvciAoY29uc3QgdGFibGUgb2YgZHMuZ2V0UmVxdWlyZWRUYWJsZXMoKSkge1xuICAgICAgICAgICAgZGIudGFibGUodGFibGUpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQXBwLWxldmVsIGRhdGFzb3VyY2VzXG4gICAgcmVnaXN0ZXJGcm9tRGF0YXNvdXJjZXModGhpcy5fY29uZmlnLmRhdGFzb3VyY2VzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuXG4gICAgLy8gU2NyZWVuLWxldmVsIGRhdGFzb3VyY2VzXG4gICAgY29uc3Qgc2NyZWVucyA9IHRoaXMuX2NvbmZpZy5qaWdzIGFzIFJlY29yZDxzdHJpbmcsIFNjcmVlbkJ1aWxkZXI+XG4gICAgZm9yIChjb25zdCBzY3JlZW4gb2YgT2JqZWN0LnZhbHVlcyhzY3JlZW5zKSkge1xuICAgICAgZm9yIChjb25zdCB0YWJsZSBvZiBzY3JlZW4uY29sbGVjdFJlcXVpcmVkVGFibGVzKCkpIHtcbiAgICAgICAgZGIudGFibGUodGFibGUpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gSlNPTiBzdHJpbmcgd2l0aCBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgICovXG4gIHRvSlNPTihvcHRpb25zPzogeyBpbmRlbnQ/OiBudW1iZXI7IHNvcnRLZXlzPzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICBjb25zdCB7IGluZGVudCA9IDIsIHNvcnRLZXlzID0gZmFsc2UgfSA9IG9wdGlvbnMgfHwge31cbiAgICBjb25zdCBvYmogPSB0aGlzLmJ1aWxkKClcbiAgICBjb25zdCBkYXRhID0gc29ydEtleXMgPyBzb3J0T2JqZWN0KG9iaikgOiBvYmpcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgaW5kZW50KVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gWUFNTCBzdHJpbmdcbiAgICovXG4gIHRvWUFNTCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBZQU1MLnN0cmluZ2lmeSh0aGlzLmJ1aWxkKCkpXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.sdk.d.ts","sourceRoot":"","sources":["../../src/application/application.sdk.ts"],"names":[],"mappings":"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","sourcesContent":["import * as YAML from 'yaml'\nimport {\n type ApplicationName,\n BaseBuilder,\n type BooleanOrExpression,\n buildTree,\n type Category,\n type Expression,\n toApplicationName,\n toExpression,\n} from '../abstract/index.js'\nimport { ActionDefinitionBuilder } from '../action/index.js'\nimport { createActionInBackgroundBuildersFactory } from '../action/ja.in-background.factory.js'\nimport { DefaultDatabaseBuilder } from '../database/index.js'\nimport {\n SqliteDatasourceBuilder,\n StaticDatasourceBuilder,\n SystemDatasourceBuilder,\n} from '../datasource/index.js'\nimport { RestFunctionBuilder } from '../function/function.rest.js'\nimport { SqlFunctionBuilder } from '../function/function.sql.js'\nimport { SoapFunctionBuilder } from '../function/function.soap.js'\nimport { assignBuilderByInputFactory, createBuilderFactory } from '../abstract/sdk.types.js'\nimport { type IconName } from '../icon/index.js'\nimport {\n CalendarScreenBuilder,\n DefaultScreenBuilder,\n DocumentScreenBuilder,\n DynamicGridScreenBuilder,\n FullScreenBuilder,\n GalleryScreenBuilder,\n ListScreenBuilder,\n type ScreenBuilder,\n StaticGridScreenBuilder,\n TabsScreenBuilder,\n WizardScreenBuilder,\n} from '../screen/index.js'\nimport { sortObject } from '../utils/index.js'\nimport { ApplicationTabBuilder } from './application.tab.js'\n\n/**\n * Built application output. Intentionally unstructured: `buildTree()` produces\n * plain objects, so no field-level contract is maintained here.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Application = Record<string, any>\n\n/**\n * Current runtime schema version. Keep in sync with mobile-runtime.\n */\nexport const RUNTIME_SCHEMA_VERSION = 7\n\nexport interface ApplicationInput {\n readonly name: string | ApplicationName\n readonly title?: string\n readonly description?: string\n readonly category?: Category\n readonly type?: string\n readonly imageUrl?: string\n readonly state?: unknown\n readonly permissions?: unknown\n readonly dependencies?: unknown\n readonly profile?: {\n readonly isPersonalInfoMenuItemVisible?: BooleanOrExpression\n readonly children: unknown[]\n }\n}\n\n/**\n * Build Jigx application configurations.\n * @alias SolutionBuilder\n * Create complete app packages with screens, data sources, functions, and databases.\n * Applications appear in Jigx app home hub.\n *\n * Required: name (lowercase, 2-50 chars), title (unique), category.\n * Components: jigs, datasources, functions, databases, tabs, expressions, actions.\n */\nexport class ApplicationBuilder extends BaseBuilder {\n protected readonly _config: Record<string, unknown> = {\n functions: {},\n datasources: {},\n databases: { default: new DefaultDatabaseBuilder() },\n jigs: {},\n actions: {},\n }\n\n /**\n * Factory for creating datasources in Jigx applications.\n *\n * Datasource types:\n * - **sqlite**: Local database, optional cloud sync\n * - **static**: Embedded JSON at build time\n * - **system**: Read-only system data (country flags)\n *\n * @see {@link SqliteDatasourceBuilder}\n * @see {@link StaticDatasourceBuilder}\n * @see {@link SystemDatasourceBuilder}\n */\n readonly addDatasource = {\n sqlite: assignBuilderByInputFactory(\n SqliteDatasourceBuilder,\n 'datasourceId',\n this._config.datasources as Record<string, unknown>,\n ),\n static: assignBuilderByInputFactory(\n StaticDatasourceBuilder,\n 'datasourceId',\n this._config.datasources as Record<string, unknown>,\n ),\n system: assignBuilderByInputFactory(\n SystemDatasourceBuilder,\n 'datasourceId',\n this._config.datasources as Record<string, unknown>,\n ),\n }\n\n /**\n * Factory for creating functions in Jigx applications.\n *\n * Function types:\n * - **rest**: HTTP API calls, JSON/XML, auth, pagination\n * - **sql**: Azure SQL queries, stored procedures\n * - **soap**: XML web services, WSDL-based\n *\n * @see {@link RestFunctionBuilder}\n * @see {@link SqlFunctionBuilder}\n * @see {@link SoapFunctionBuilder}\n */\n readonly addFunction = {\n rest: assignBuilderByInputFactory(\n RestFunctionBuilder,\n 'functionId',\n this._config.functions as Record<string, unknown>,\n ),\n sql: assignBuilderByInputFactory(\n SqlFunctionBuilder,\n 'functionId',\n this._config.functions as Record<string, unknown>,\n ),\n soap: assignBuilderByInputFactory(\n SoapFunctionBuilder,\n 'functionId',\n this._config.functions as Record<string, unknown>,\n ),\n }\n\n /**\n * Factory for creating screens (jigs) in Jigx applications.\n *\n * Screen types:\n * - **list**: Scrollable lists. Templates, sections, search\n * - **staticGrid**: Static responsive grids\n * - **dynamicGrid**: Data-driven responsive grids\n * - **default**: Forms, mixed content container\n * - **calendar**: Events. Month/week/day views\n * - **document**: PDF/HTML viewer. Zoom, download\n * - **fullScreen**: Maps, chat, immersive UI\n * - **tabs**: Tab navigation between screens\n * - **wizard**: Multi-step workflows\n *\n * @see {@link ListScreenBuilder}\n * @see {@link StaticGridScreenBuilder}\n * @see {@link DynamicGridScreenBuilder}\n * @see {@link DefaultScreenBuilder}\n * @see {@link CalendarScreenBuilder}\n * @see {@link DocumentScreenBuilder}\n * @see {@link FullScreenBuilder}\n * @see {@link TabsScreenBuilder}\n * @see {@link WizardScreenBuilder}\n */\n readonly addScreen = {\n calendar: assignBuilderByInputFactory(\n CalendarScreenBuilder,\n 'screenId',\n this._config.jigs as Record<string, unknown>,\n ),\n default: assignBuilderByInputFactory(\n DefaultScreenBuilder,\n 'screenId',\n this._config.jigs as Record<string, unknown>,\n ),\n document: assignBuilderByInputFactory(\n DocumentScreenBuilder,\n 'screenId',\n this._config.jigs as Record<string, unknown>,\n ),\n fullScreen: assignBuilderByInputFactory(\n FullScreenBuilder,\n 'screenId',\n this._config.jigs as Record<string, unknown>,\n ),\n staticGrid: assignBuilderByInputFactory(\n StaticGridScreenBuilder,\n 'screenId',\n this._config.jigs as Record<string, unknown>,\n ),\n dynamicGrid: assignBuilderByInputFactory(\n DynamicGridScreenBuilder,\n 'screenId',\n this._config.jigs as Record<string, unknown>,\n ),\n gallery: assignBuilderByInputFactory(\n GalleryScreenBuilder,\n 'screenId',\n this._config.jigs as Record<string, unknown>,\n ),\n list: assignBuilderByInputFactory(\n ListScreenBuilder,\n 'screenId',\n this._config.jigs as Record<string, unknown>,\n ),\n tabs: assignBuilderByInputFactory(\n TabsScreenBuilder,\n 'screenId',\n this._config.jigs as Record<string, unknown>,\n ),\n wizard: assignBuilderByInputFactory(\n WizardScreenBuilder,\n 'screenId',\n this._config.jigs as Record<string, unknown>,\n ),\n screens: this._config.jigs as Record<string, ScreenBuilder>,\n }\n\n /**\n * Factory for configuring the application's local SQLite database.\n *\n * Every application has a default database for storing local data.\n * Use this to define tables that will be created automatically.\n */\n readonly addDatabase = {\n default: (this._config.databases as { default: DefaultDatabaseBuilder }).default,\n }\n\n /**\n * Create application builder with validated parameters.\n *\n * @param options.name - Unique identifier. Lowercase 2-50, prefer kebab-case, starts alpha, ends alphanum.\n * @param options.title - Display title shown in Jigx home hub (defaults to name)\n * @param options.description - Explains application purpose\n * @param options.category - Classification for organizing solutions (defaults to 'miscellaneous')\n *\n * @throws {Error} When name doesn't match required pattern\n */\n constructor(options: ApplicationInput) {\n super()\n const { name } = options\n this._config.name = toApplicationName(name)\n this._config.title = options.title || name\n this._config.category = 'miscellaneous'\n this._config.runtimeSchemaVersion = RUNTIME_SCHEMA_VERSION\n this.with(options)\n }\n\n /**\n * Update application configuration fields.\n *\n * @param options - Partial application input (name is excluded, set only in constructor)\n */\n with(options: Partial<Omit<ApplicationInput, 'name'>>): this {\n if (options.title !== undefined) this._config.title = options.title\n if (options.description !== undefined) this._config.description = options.description\n if (options.category !== undefined) this._config.category = options.category\n if (options.type !== undefined) this._config.type = options.type\n if (options.imageUrl !== undefined) this._config.imageUrl = options.imageUrl\n if (options.state !== undefined) this._config.state = options.state\n if (options.permissions !== undefined) this._config.permissions = options.permissions\n if (options.dependencies !== undefined) this._config.dependencies = options.dependencies\n if (options.profile !== undefined) this._config.profile = options.profile\n return this\n }\n\n /**\n * Add a reusable JSONata expression to the application.\n *\n * Expressions can be referenced throughout the application using the syntax\n * `=@ctx.solution.expressions.{name}`. This promotes code reuse and\n * maintainability.\n *\n * @param name - Expression identifier\n * @param jsonata - JSONata expression (with or without leading =)\n * @returns This builder for chaining\n */\n expression(name: string, jsonata: string | Expression | Record<string, unknown>): this {\n if (!this._config.expressions) this._config.expressions = {}\n const expressions = this._config.expressions as Record<\n string,\n Expression | Record<string, unknown>\n >\n if (typeof jsonata === 'object') {\n expressions[name] = jsonata\n } else {\n expressions[name] = toExpression(jsonata)\n }\n return this\n }\n\n /**\n * Configure home screen tabs for organizing content.\n *\n * Tabs provide navigation at the top of the application's home screen.\n * This is the modern replacement for the deprecated widgets approach.\n *\n * @param options - Tab configuration\n * @param options.screenId - Screen to navigate to when selected\n * @param options.icon - Icon name or expression\n * @param options.tabId - Optional tab key. Defaults to `screenId`.\n * @param options.label - Optional label text\n * @param options.badge - Optional badge indicator\n * @param options.when - Optional visibility condition\n */\n readonly addTab = createBuilderFactory(ApplicationTabBuilder, (builder) => {\n if (!this._config.tabs) this._config.tabs = {}\n ;(this._config.tabs as Record<string, unknown>)[builder.tabId] = builder\n })\n\n /**\n * Create **global** action definition reusable across jigs.\n * Actions created here can be referenced throughout the application.\n */\n readonly addAction = assignBuilderByInputFactory(\n ActionDefinitionBuilder,\n 'actionId',\n this._config.actions as Record<string, unknown>,\n )\n\n /**\n * Consider using @ctx.solution.name instead.\n */\n get name(): ApplicationName {\n return this._config.name as ApplicationName\n }\n\n /**\n * Add metadata\n */\n metadata(key: string, value: unknown): this {\n if (!this._config.metadata) this._config.metadata = {}\n ;(this._config.metadata as Record<string, unknown>)[key] = value\n return this\n }\n\n getStateRef(key: string): string {\n // TODO: validate key, how?\n return `@ctx.solution.state.${key}`\n }\n\n getExpressionRef(name: string): string {\n // TODO: validate name, how?\n return `@ctx.expressions.${name}`\n }\n\n /**\n * Get a registered expression value by name.\n * @param name - Expression identifier\n * @returns The expression value, or undefined if not registered\n */\n getExpression(name: string): Expression | Record<string, unknown> | undefined {\n const expressions = this._config.expressions as\n | Record<string, Expression | Record<string, unknown>>\n | undefined\n return expressions?.[name]\n }\n\n /**\n * Add custom script (reserved for future use)\n * @param name - Script name/identifier\n * @param script - Script content or configuration\n */\n script(name: string, script: unknown): this {\n if (!this._config.scripts) this._config.scripts = {}\n ;(this._config.scripts as Record<string, unknown>)[name] = script\n return this\n }\n\n /**\n * Add internationalization translation\n * @param locale - Locale identifier (e.g., 'en', 'es', 'fr')\n * @param translations - Translation key-value pairs\n */\n translation(locale: string, translations: unknown): this {\n if (!this._config.translations) this._config.translations = {}\n ;(this._config.translations as Record<string, unknown>)[locale] = translations\n return this\n }\n\n /**\n * Add database table change listener\n * @param listener - Table change listener configuration\n */\n onTableChanged(listener: unknown): this {\n if (!this._config.onTableChanged) this._config.onTableChanged = []\n ;(this._config.onTableChanged as unknown[]).push(listener)\n return this\n }\n\n /**\n * Configure theme palette for the application\n * @param palette - Color palette definition\n */\n themePalette(palette: unknown): this {\n if (!this._config.assets) this._config.assets = {}\n const assets = this._config.assets as Record<string, unknown>\n if (!assets.theme) assets.theme = {}\n ;(assets.theme as Record<string, unknown>).palette = palette\n return this\n }\n\n /**\n * Add image URLs to the application assets\n * @param images - Array of image URLs\n */\n images(...images: string[]): this {\n if (!this._config.assets) this._config.assets = {}\n const assets = this._config.assets as Record<string, unknown>\n if (!assets.images) assets.images = []\n ;(assets.images as string[]).push(...images)\n return this\n }\n\n /**\n * Add icon references to the application assets\n * @param icons - Array of icon names\n */\n icons(...icons: IconName[]): this {\n if (!this._config.assets) this._config.assets = {}\n const assets = this._config.assets as Record<string, unknown>\n if (!assets.icons) assets.icons = []\n ;(assets.icons as IconName[]).push(...icons)\n return this\n }\n\n /**\n * Action executed when application loads.\n */\n readonly onLoad = createActionInBackgroundBuildersFactory((action) => {\n this._config.onLoad = action\n })\n\n /**\n * Action executed when application gains focus.\n */\n readonly onFocus = createActionInBackgroundBuildersFactory((action) => {\n this._config.onFocus = action\n })\n\n /**\n * Action executed on pull-to-refresh.\n */\n readonly onRefresh = createActionInBackgroundBuildersFactory((action) => {\n this._config.onRefresh = action\n })\n\n /**\n * Validate the application configuration including all screens.\n *\n * This method should be called before build() to ensure the application\n * configuration is valid. It iterates through all screens and calls their\n * _validate() methods.\n *\n * @throws {Error} When validation fails\n */\n _validate(): void {\n const screens = this._config.jigs as Record<string, ScreenBuilder>\n for (const screen of Object.values(screens)) {\n screen._validate()\n }\n }\n\n /**\n * Build and return the application configuration.\n */\n build(): Application {\n this._validate()\n\n // Register dynamic tables on default database before building\n this.registerRequiredTables()\n\n // Extract scripts for special transformation (scripts -> { expressions: scripts })\n const { scripts, ...configRest } = this._config\n const scriptOutput =\n scripts && Object.keys(scripts as object).length > 0\n ? { expressions: { ...(scripts as object) } }\n : undefined\n\n return {\n ...buildTree(configRest),\n ...(scriptOutput ? { scripts: scriptOutput } : {}),\n }\n }\n\n /**\n * Scan all datasources (app-level and screen-level) for dynamic sqlite\n * entities and register their required tables on the default database.\n */\n private registerRequiredTables(): void {\n const db = this.addDatabase.default\n\n const registerFromDatasources = (datasources: Record<string, unknown>): void => {\n for (const ds of Object.values(datasources)) {\n if (ds instanceof SqliteDatasourceBuilder) {\n for (const table of ds.getRequiredTables()) {\n db.table(table)\n }\n }\n }\n }\n\n // App-level datasources\n registerFromDatasources(this._config.datasources as Record<string, unknown>)\n\n // Screen-level datasources\n const screens = this._config.jigs as Record<string, ScreenBuilder>\n for (const screen of Object.values(screens)) {\n for (const table of screen.collectRequiredTables()) {\n db.table(table)\n }\n }\n }\n\n /**\n * Convert to JSON string with formatting options\n */\n toJSON(options?: { indent?: number; sortKeys?: boolean }): string {\n const { indent = 2, sortKeys = false } = options || {}\n const obj = this.build()\n const data = sortKeys ? sortObject(obj) : obj\n return JSON.stringify(data, null, indent)\n }\n\n /**\n * Convert to YAML string\n */\n toYAML(): string {\n return YAML.stringify(this.build())\n }\n}\n"]}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import * as YAML from 'yaml';
|
|
2
|
+
import { BaseBuilder, buildTree, toApplicationName, toExpression, } from '../abstract/index.js';
|
|
3
|
+
import { ActionDefinitionBuilder } from '../action/index.js';
|
|
4
|
+
import { createActionInBackgroundBuildersFactory } from '../action/ja.in-background.factory.js';
|
|
5
|
+
import { DefaultDatabaseBuilder } from '../database/index.js';
|
|
6
|
+
import { SqliteDatasourceBuilder, StaticDatasourceBuilder, SystemDatasourceBuilder, } from '../datasource/index.js';
|
|
7
|
+
import { RestFunctionBuilder } from '../function/function.rest.js';
|
|
8
|
+
import { SqlFunctionBuilder } from '../function/function.sql.js';
|
|
9
|
+
import { SoapFunctionBuilder } from '../function/function.soap.js';
|
|
10
|
+
import { assignBuilderByInputFactory, createBuilderFactory } from '../abstract/sdk.types.js';
|
|
11
|
+
import { CalendarScreenBuilder, DefaultScreenBuilder, DocumentScreenBuilder, DynamicGridScreenBuilder, FullScreenBuilder, GalleryScreenBuilder, ListScreenBuilder, StaticGridScreenBuilder, TabsScreenBuilder, WizardScreenBuilder, } from '../screen/index.js';
|
|
12
|
+
import { sortObject } from '../utils/index.js';
|
|
13
|
+
import { ApplicationTabBuilder } from './application.tab.js';
|
|
14
|
+
export const RUNTIME_SCHEMA_VERSION = 7;
|
|
15
|
+
export class ApplicationBuilder extends BaseBuilder {
|
|
16
|
+
_config = {
|
|
17
|
+
functions: {},
|
|
18
|
+
datasources: {},
|
|
19
|
+
databases: { default: new DefaultDatabaseBuilder() },
|
|
20
|
+
jigs: {},
|
|
21
|
+
actions: {},
|
|
22
|
+
};
|
|
23
|
+
addDatasource = {
|
|
24
|
+
sqlite: assignBuilderByInputFactory(SqliteDatasourceBuilder, 'datasourceId', this._config.datasources),
|
|
25
|
+
static: assignBuilderByInputFactory(StaticDatasourceBuilder, 'datasourceId', this._config.datasources),
|
|
26
|
+
system: assignBuilderByInputFactory(SystemDatasourceBuilder, 'datasourceId', this._config.datasources),
|
|
27
|
+
};
|
|
28
|
+
addFunction = {
|
|
29
|
+
rest: assignBuilderByInputFactory(RestFunctionBuilder, 'functionId', this._config.functions),
|
|
30
|
+
sql: assignBuilderByInputFactory(SqlFunctionBuilder, 'functionId', this._config.functions),
|
|
31
|
+
soap: assignBuilderByInputFactory(SoapFunctionBuilder, 'functionId', this._config.functions),
|
|
32
|
+
};
|
|
33
|
+
addScreen = {
|
|
34
|
+
calendar: assignBuilderByInputFactory(CalendarScreenBuilder, 'screenId', this._config.jigs),
|
|
35
|
+
default: assignBuilderByInputFactory(DefaultScreenBuilder, 'screenId', this._config.jigs),
|
|
36
|
+
document: assignBuilderByInputFactory(DocumentScreenBuilder, 'screenId', this._config.jigs),
|
|
37
|
+
fullScreen: assignBuilderByInputFactory(FullScreenBuilder, 'screenId', this._config.jigs),
|
|
38
|
+
staticGrid: assignBuilderByInputFactory(StaticGridScreenBuilder, 'screenId', this._config.jigs),
|
|
39
|
+
dynamicGrid: assignBuilderByInputFactory(DynamicGridScreenBuilder, 'screenId', this._config.jigs),
|
|
40
|
+
gallery: assignBuilderByInputFactory(GalleryScreenBuilder, 'screenId', this._config.jigs),
|
|
41
|
+
list: assignBuilderByInputFactory(ListScreenBuilder, 'screenId', this._config.jigs),
|
|
42
|
+
tabs: assignBuilderByInputFactory(TabsScreenBuilder, 'screenId', this._config.jigs),
|
|
43
|
+
wizard: assignBuilderByInputFactory(WizardScreenBuilder, 'screenId', this._config.jigs),
|
|
44
|
+
screens: this._config.jigs,
|
|
45
|
+
};
|
|
46
|
+
addDatabase = {
|
|
47
|
+
default: this._config.databases.default,
|
|
48
|
+
};
|
|
49
|
+
constructor(options) {
|
|
50
|
+
super();
|
|
51
|
+
const { name } = options;
|
|
52
|
+
this._config.name = toApplicationName(name);
|
|
53
|
+
this._config.title = options.title || name;
|
|
54
|
+
this._config.category = 'miscellaneous';
|
|
55
|
+
this._config.runtimeSchemaVersion = RUNTIME_SCHEMA_VERSION;
|
|
56
|
+
this.with(options);
|
|
57
|
+
}
|
|
58
|
+
with(options) {
|
|
59
|
+
if (options.title !== undefined)
|
|
60
|
+
this._config.title = options.title;
|
|
61
|
+
if (options.description !== undefined)
|
|
62
|
+
this._config.description = options.description;
|
|
63
|
+
if (options.category !== undefined)
|
|
64
|
+
this._config.category = options.category;
|
|
65
|
+
if (options.type !== undefined)
|
|
66
|
+
this._config.type = options.type;
|
|
67
|
+
if (options.imageUrl !== undefined)
|
|
68
|
+
this._config.imageUrl = options.imageUrl;
|
|
69
|
+
if (options.state !== undefined)
|
|
70
|
+
this._config.state = options.state;
|
|
71
|
+
if (options.permissions !== undefined)
|
|
72
|
+
this._config.permissions = options.permissions;
|
|
73
|
+
if (options.dependencies !== undefined)
|
|
74
|
+
this._config.dependencies = options.dependencies;
|
|
75
|
+
if (options.profile !== undefined)
|
|
76
|
+
this._config.profile = options.profile;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
expression(name, jsonata) {
|
|
80
|
+
if (!this._config.expressions)
|
|
81
|
+
this._config.expressions = {};
|
|
82
|
+
const expressions = this._config.expressions;
|
|
83
|
+
if (typeof jsonata === 'object') {
|
|
84
|
+
expressions[name] = jsonata;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
expressions[name] = toExpression(jsonata);
|
|
88
|
+
}
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
addTab = createBuilderFactory(ApplicationTabBuilder, (builder) => {
|
|
92
|
+
if (!this._config.tabs)
|
|
93
|
+
this._config.tabs = {};
|
|
94
|
+
this._config.tabs[builder.tabId] = builder;
|
|
95
|
+
});
|
|
96
|
+
addAction = assignBuilderByInputFactory(ActionDefinitionBuilder, 'actionId', this._config.actions);
|
|
97
|
+
get name() {
|
|
98
|
+
return this._config.name;
|
|
99
|
+
}
|
|
100
|
+
metadata(key, value) {
|
|
101
|
+
if (!this._config.metadata)
|
|
102
|
+
this._config.metadata = {};
|
|
103
|
+
this._config.metadata[key] = value;
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
getStateRef(key) {
|
|
107
|
+
return `@ctx.solution.state.${key}`;
|
|
108
|
+
}
|
|
109
|
+
getExpressionRef(name) {
|
|
110
|
+
return `@ctx.expressions.${name}`;
|
|
111
|
+
}
|
|
112
|
+
getExpression(name) {
|
|
113
|
+
const expressions = this._config.expressions;
|
|
114
|
+
return expressions?.[name];
|
|
115
|
+
}
|
|
116
|
+
script(name, script) {
|
|
117
|
+
if (!this._config.scripts)
|
|
118
|
+
this._config.scripts = {};
|
|
119
|
+
this._config.scripts[name] = script;
|
|
120
|
+
return this;
|
|
121
|
+
}
|
|
122
|
+
translation(locale, translations) {
|
|
123
|
+
if (!this._config.translations)
|
|
124
|
+
this._config.translations = {};
|
|
125
|
+
this._config.translations[locale] = translations;
|
|
126
|
+
return this;
|
|
127
|
+
}
|
|
128
|
+
onTableChanged(listener) {
|
|
129
|
+
if (!this._config.onTableChanged)
|
|
130
|
+
this._config.onTableChanged = [];
|
|
131
|
+
this._config.onTableChanged.push(listener);
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
themePalette(palette) {
|
|
135
|
+
if (!this._config.assets)
|
|
136
|
+
this._config.assets = {};
|
|
137
|
+
const assets = this._config.assets;
|
|
138
|
+
if (!assets.theme)
|
|
139
|
+
assets.theme = {};
|
|
140
|
+
assets.theme.palette = palette;
|
|
141
|
+
return this;
|
|
142
|
+
}
|
|
143
|
+
images(...images) {
|
|
144
|
+
if (!this._config.assets)
|
|
145
|
+
this._config.assets = {};
|
|
146
|
+
const assets = this._config.assets;
|
|
147
|
+
if (!assets.images)
|
|
148
|
+
assets.images = [];
|
|
149
|
+
assets.images.push(...images);
|
|
150
|
+
return this;
|
|
151
|
+
}
|
|
152
|
+
icons(...icons) {
|
|
153
|
+
if (!this._config.assets)
|
|
154
|
+
this._config.assets = {};
|
|
155
|
+
const assets = this._config.assets;
|
|
156
|
+
if (!assets.icons)
|
|
157
|
+
assets.icons = [];
|
|
158
|
+
assets.icons.push(...icons);
|
|
159
|
+
return this;
|
|
160
|
+
}
|
|
161
|
+
onLoad = createActionInBackgroundBuildersFactory((action) => {
|
|
162
|
+
this._config.onLoad = action;
|
|
163
|
+
});
|
|
164
|
+
onFocus = createActionInBackgroundBuildersFactory((action) => {
|
|
165
|
+
this._config.onFocus = action;
|
|
166
|
+
});
|
|
167
|
+
onRefresh = createActionInBackgroundBuildersFactory((action) => {
|
|
168
|
+
this._config.onRefresh = action;
|
|
169
|
+
});
|
|
170
|
+
_validate() {
|
|
171
|
+
const screens = this._config.jigs;
|
|
172
|
+
for (const screen of Object.values(screens)) {
|
|
173
|
+
screen._validate();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
build() {
|
|
177
|
+
this._validate();
|
|
178
|
+
this.registerRequiredTables();
|
|
179
|
+
const { scripts, ...configRest } = this._config;
|
|
180
|
+
const scriptOutput = scripts && Object.keys(scripts).length > 0
|
|
181
|
+
? { expressions: { ...scripts } }
|
|
182
|
+
: undefined;
|
|
183
|
+
return {
|
|
184
|
+
...buildTree(configRest),
|
|
185
|
+
...(scriptOutput ? { scripts: scriptOutput } : {}),
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
registerRequiredTables() {
|
|
189
|
+
const db = this.addDatabase.default;
|
|
190
|
+
const registerFromDatasources = (datasources) => {
|
|
191
|
+
for (const ds of Object.values(datasources)) {
|
|
192
|
+
if (ds instanceof SqliteDatasourceBuilder) {
|
|
193
|
+
for (const table of ds.getRequiredTables()) {
|
|
194
|
+
db.table(table);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
registerFromDatasources(this._config.datasources);
|
|
200
|
+
const screens = this._config.jigs;
|
|
201
|
+
for (const screen of Object.values(screens)) {
|
|
202
|
+
for (const table of screen.collectRequiredTables()) {
|
|
203
|
+
db.table(table);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
toJSON(options) {
|
|
208
|
+
const { indent = 2, sortKeys = false } = options || {};
|
|
209
|
+
const obj = this.build();
|
|
210
|
+
const data = sortKeys ? sortObject(obj) : obj;
|
|
211
|
+
return JSON.stringify(data, null, indent);
|
|
212
|
+
}
|
|
213
|
+
toYAML() {
|
|
214
|
+
return YAML.stringify(this.build());
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uc2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL2FwcGxpY2F0aW9uLnNkay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLEVBRUwsV0FBVyxFQUVYLFNBQVMsRUFHVCxpQkFBaUIsRUFDakIsWUFBWSxHQUNiLE1BQU0sc0JBQXNCLENBQUE7QUFDN0IsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDNUQsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDL0YsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDN0QsT0FBTyxFQUNMLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsdUJBQXVCLEdBQ3hCLE1BQU0sd0JBQXdCLENBQUE7QUFDL0IsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUE7QUFDaEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDbEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFFNUYsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUVqQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLG1CQUFtQixHQUNwQixNQUFNLG9CQUFvQixDQUFBO0FBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQVk1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QztRQUFBLENBQ0YsQ0FBQTtRQUdELHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBc0MsQ0FBQyxDQUFBO1FBRzVFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBcUMsQ0FBQTtRQUNsRSxLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLENBQUM7Z0JBQ25ELEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDakIsQ0FBQztRQUNILENBQUM7SUFBQSxDQUNGO0lBS0QsTUFBTSxDQUFDLE9BQWlELEVBQVU7UUFDaEUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEtBQUssRUFBRSxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUE7UUFDdEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUE7UUFDN0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFBQSxDQUMxQztJQUtELE1BQU0sR0FBVztRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUFBLENBQ3BDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBZQU1MIGZyb20gJ3lhbWwnXG5pbXBvcnQge1xuICB0eXBlIEFwcGxpY2F0aW9uTmFtZSxcbiAgQmFzZUJ1aWxkZXIsXG4gIHR5cGUgQm9vbGVhbk9yRXhwcmVzc2lvbixcbiAgYnVpbGRUcmVlLFxuICB0eXBlIENhdGVnb3J5LFxuICB0eXBlIEV4cHJlc3Npb24sXG4gIHRvQXBwbGljYXRpb25OYW1lLFxuICB0b0V4cHJlc3Npb24sXG59IGZyb20gJy4uL2Fic3RyYWN0L2luZGV4LmpzJ1xuaW1wb3J0IHsgQWN0aW9uRGVmaW5pdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi9hY3Rpb24vaW5kZXguanMnXG5pbXBvcnQgeyBjcmVhdGVBY3Rpb25JbkJhY2tncm91bmRCdWlsZGVyc0ZhY3RvcnkgfSBmcm9tICcuLi9hY3Rpb24vamEuaW4tYmFja2dyb3VuZC5mYWN0b3J5LmpzJ1xuaW1wb3J0IHsgRGVmYXVsdERhdGFiYXNlQnVpbGRlciB9IGZyb20gJy4uL2RhdGFiYXNlL2luZGV4LmpzJ1xuaW1wb3J0IHtcbiAgU3FsaXRlRGF0YXNvdXJjZUJ1aWxkZXIsXG4gIFN0YXRpY0RhdGFzb3VyY2VCdWlsZGVyLFxuICBTeXN0ZW1EYXRhc291cmNlQnVpbGRlcixcbn0gZnJvbSAnLi4vZGF0YXNvdXJjZS9pbmRleC5qcydcbmltcG9ydCB7IFJlc3RGdW5jdGlvbkJ1aWxkZXIgfSBmcm9tICcuLi9mdW5jdGlvbi9mdW5jdGlvbi5yZXN0LmpzJ1xuaW1wb3J0IHsgU3FsRnVuY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vZnVuY3Rpb24vZnVuY3Rpb24uc3FsLmpzJ1xuaW1wb3J0IHsgU29hcEZ1bmN0aW9uQnVpbGRlciB9IGZyb20gJy4uL2Z1bmN0aW9uL2Z1bmN0aW9uLnNvYXAuanMnXG5pbXBvcnQgeyBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnksIGNyZWF0ZUJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vYWJzdHJhY3Qvc2RrLnR5cGVzLmpzJ1xuaW1wb3J0IHsgdHlwZSBJY29uTmFtZSB9IGZyb20gJy4uL2ljb24vaW5kZXguanMnXG5pbXBvcnQge1xuICBDYWxlbmRhclNjcmVlbkJ1aWxkZXIsXG4gIERlZmF1bHRTY3JlZW5CdWlsZGVyLFxuICBEb2N1bWVudFNjcmVlbkJ1aWxkZXIsXG4gIER5bmFtaWNHcmlkU2NyZWVuQnVpbGRlcixcbiAgRnVsbFNjcmVlbkJ1aWxkZXIsXG4gIEdhbGxlcnlTY3JlZW5CdWlsZGVyLFxuICBMaXN0U2NyZWVuQnVpbGRlcixcbiAgdHlwZSBTY3JlZW5CdWlsZGVyLFxuICBTdGF0aWNHcmlkU2NyZWVuQnVpbGRlcixcbiAgVGFic1NjcmVlbkJ1aWxkZXIsXG4gIFdpemFyZFNjcmVlbkJ1aWxkZXIsXG59IGZyb20gJy4uL3NjcmVlbi9pbmRleC5qcydcbmltcG9ydCB7IHNvcnRPYmplY3QgfSBmcm9tICcuLi91dGlscy9pbmRleC5qcydcbmltcG9ydCB7IEFwcGxpY2F0aW9uVGFiQnVpbGRlciB9IGZyb20gJy4vYXBwbGljYXRpb24udGFiLmpzJ1xuXG4vKipcbiAqIEJ1aWx0IGFwcGxpY2F0aW9uIG91dHB1dC4gSW50ZW50aW9uYWxseSB1bnN0cnVjdHVyZWQ6IGBidWlsZFRyZWUoKWAgcHJvZHVjZXNcbiAqIHBsYWluIG9iamVjdHMsIHNvIG5vIGZpZWxkLWxldmVsIGNvbnRyYWN0IGlzIG1haW50YWluZWQgaGVyZS5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEFwcGxpY2F0aW9uID0gUmVjb3JkPHN0cmluZywgYW55PlxuXG4vKipcbiAqIEN1cnJlbnQgcnVudGltZSBzY2hlbWEgdmVyc2lvbi4gS2VlcCBpbiBzeW5jIHdpdGggbW9iaWxlLXJ1bnRpbWUuXG4gKi9cbmV4cG9ydCBjb25zdCBSVU5USU1FX1NDSEVNQV9WRVJTSU9OID0gN1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcGxpY2F0aW9uSW5wdXQge1xuICByZWFkb25seSBuYW1lOiBzdHJpbmcgfCBBcHBsaWNhdGlvbk5hbWVcbiAgcmVhZG9ubHkgdGl0bGU/OiBzdHJpbmdcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgcmVhZG9ubHkgY2F0ZWdvcnk/OiBDYXRlZ29yeVxuICByZWFkb25seSB0eXBlPzogc3RyaW5nXG4gIHJlYWRvbmx5IGltYWdlVXJsPzogc3RyaW5nXG4gIHJlYWRvbmx5IHN0YXRlPzogdW5rbm93blxuICByZWFkb25seSBwZXJtaXNzaW9ucz86IHVua25vd25cbiAgcmVhZG9ubHkgZGVwZW5kZW5jaWVzPzogdW5rbm93blxuICByZWFkb25seSBwcm9maWxlPzoge1xuICAgIHJlYWRvbmx5IGlzUGVyc29uYWxJbmZvTWVudUl0ZW1WaXNpYmxlPzogQm9vbGVhbk9yRXhwcmVzc2lvblxuICAgIHJlYWRvbmx5IGNoaWxkcmVuOiB1bmtub3duW11cbiAgfVxufVxuXG4vKipcbiAqIEJ1aWxkIEppZ3ggYXBwbGljYXRpb24gY29uZmlndXJhdGlvbnMuXG4gKiBAYWxpYXMgU29sdXRpb25CdWlsZGVyXG4gKiBDcmVhdGUgY29tcGxldGUgYXBwIHBhY2thZ2VzIHdpdGggc2NyZWVucywgZGF0YSBzb3VyY2VzLCBmdW5jdGlvbnMsIGFuZCBkYXRhYmFzZXMuXG4gKiBBcHBsaWNhdGlvbnMgYXBwZWFyIGluIEppZ3ggYXBwIGhvbWUgaHViLlxuICpcbiAqIFJlcXVpcmVkOiBuYW1lIChsb3dlcmNhc2UsIDItNTAgY2hhcnMpLCB0aXRsZSAodW5pcXVlKSwgY2F0ZWdvcnkuXG4gKiBDb21wb25lbnRzOiBqaWdzLCBkYXRhc291cmNlcywgZnVuY3Rpb25zLCBkYXRhYmFzZXMsIHRhYnMsIGV4cHJlc3Npb25zLCBhY3Rpb25zLlxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25CdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgZnVuY3Rpb25zOiB7fSxcbiAgICBkYXRhc291cmNlczoge30sXG4gICAgZGF0YWJhc2VzOiB7IGRlZmF1bHQ6IG5ldyBEZWZhdWx0RGF0YWJhc2VCdWlsZGVyKCkgfSxcbiAgICBqaWdzOiB7fSxcbiAgICBhY3Rpb25zOiB7fSxcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciBjcmVhdGluZyBkYXRhc291cmNlcyBpbiBKaWd4IGFwcGxpY2F0aW9ucy5cbiAgICpcbiAgICogRGF0YXNvdXJjZSB0eXBlczpcbiAgICogLSAqKnNxbGl0ZSoqOiBMb2NhbCBkYXRhYmFzZSwgb3B0aW9uYWwgY2xvdWQgc3luY1xuICAgKiAtICoqc3RhdGljKio6IEVtYmVkZGVkIEpTT04gYXQgYnVpbGQgdGltZVxuICAgKiAtICoqc3lzdGVtKio6IFJlYWQtb25seSBzeXN0ZW0gZGF0YSAoY291bnRyeSBmbGFncylcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgU3FsaXRlRGF0YXNvdXJjZUJ1aWxkZXJ9XG4gICAqIEBzZWUge0BsaW5rIFN0YXRpY0RhdGFzb3VyY2VCdWlsZGVyfVxuICAgKiBAc2VlIHtAbGluayBTeXN0ZW1EYXRhc291cmNlQnVpbGRlcn1cbiAgICovXG4gIHJlYWRvbmx5IGFkZERhdGFzb3VyY2UgPSB7XG4gICAgc3FsaXRlOiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBTcWxpdGVEYXRhc291cmNlQnVpbGRlcixcbiAgICAgICdkYXRhc291cmNlSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmRhdGFzb3VyY2VzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICksXG4gICAgc3RhdGljOiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBTdGF0aWNEYXRhc291cmNlQnVpbGRlcixcbiAgICAgICdkYXRhc291cmNlSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmRhdGFzb3VyY2VzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICksXG4gICAgc3lzdGVtOiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBTeXN0ZW1EYXRhc291cmNlQnVpbGRlcixcbiAgICAgICdkYXRhc291cmNlSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmRhdGFzb3VyY2VzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICksXG4gIH1cblxuICAvKipcbiAgICogRmFjdG9yeSBmb3IgY3JlYXRpbmcgZnVuY3Rpb25zIGluIEppZ3ggYXBwbGljYXRpb25zLlxuICAgKlxuICAgKiBGdW5jdGlvbiB0eXBlczpcbiAgICogLSAqKnJlc3QqKjogSFRUUCBBUEkgY2FsbHMsIEpTT04vWE1MLCBhdXRoLCBwYWdpbmF0aW9uXG4gICAqIC0gKipzcWwqKjogQXp1cmUgU1FMIHF1ZXJpZXMsIHN0b3JlZCBwcm9jZWR1cmVzXG4gICAqIC0gKipzb2FwKio6IFhNTCB3ZWIgc2VydmljZXMsIFdTREwtYmFzZWRcbiAgICpcbiAgICogQHNlZSB7QGxpbmsgUmVzdEZ1bmN0aW9uQnVpbGRlcn1cbiAgICogQHNlZSB7QGxpbmsgU3FsRnVuY3Rpb25CdWlsZGVyfVxuICAgKiBAc2VlIHtAbGluayBTb2FwRnVuY3Rpb25CdWlsZGVyfVxuICAgKi9cbiAgcmVhZG9ubHkgYWRkRnVuY3Rpb24gPSB7XG4gICAgcmVzdDogYXNzaWduQnVpbGRlckJ5SW5wdXRGYWN0b3J5KFxuICAgICAgUmVzdEZ1bmN0aW9uQnVpbGRlcixcbiAgICAgICdmdW5jdGlvbklkJyxcbiAgICAgIHRoaXMuX2NvbmZpZy5mdW5jdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICBzcWw6IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeShcbiAgICAgIFNxbEZ1bmN0aW9uQnVpbGRlcixcbiAgICAgICdmdW5jdGlvbklkJyxcbiAgICAgIHRoaXMuX2NvbmZpZy5mdW5jdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICBzb2FwOiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBTb2FwRnVuY3Rpb25CdWlsZGVyLFxuICAgICAgJ2Z1bmN0aW9uSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmZ1bmN0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApLFxuICB9XG5cbiAgLyoqXG4gICAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIHNjcmVlbnMgKGppZ3MpIGluIEppZ3ggYXBwbGljYXRpb25zLlxuICAgKlxuICAgKiBTY3JlZW4gdHlwZXM6XG4gICAqIC0gKipsaXN0Kio6IFNjcm9sbGFibGUgbGlzdHMuIFRlbXBsYXRlcywgc2VjdGlvbnMsIHNlYXJjaFxuICAgKiAtICoqc3RhdGljR3JpZCoqOiBTdGF0aWMgcmVzcG9uc2l2ZSBncmlkc1xuICAgKiAtICoqZHluYW1pY0dyaWQqKjogRGF0YS1kcml2ZW4gcmVzcG9uc2l2ZSBncmlkc1xuICAgKiAtICoqZGVmYXVsdCoqOiBGb3JtcywgbWl4ZWQgY29udGVudCBjb250YWluZXJcbiAgICogLSAqKmNhbGVuZGFyKio6IEV2ZW50cy4gTW9udGgvd2Vlay9kYXkgdmlld3NcbiAgICogLSAqKmRvY3VtZW50Kio6IFBERi9IVE1MIHZpZXdlci4gWm9vbSwgZG93bmxvYWRcbiAgICogLSAqKmZ1bGxTY3JlZW4qKjogTWFwcywgY2hhdCwgaW1tZXJzaXZlIFVJXG4gICAqIC0gKip0YWJzKio6IFRhYiBuYXZpZ2F0aW9uIGJldHdlZW4gc2NyZWVuc1xuICAgKiAtICoqd2l6YXJkKio6IE11bHRpLXN0ZXAgd29ya2Zsb3dzXG4gICAqXG4gICAqIEBzZWUge0BsaW5rIExpc3RTY3JlZW5CdWlsZGVyfVxuICAgKiBAc2VlIHtAbGluayBTdGF0aWNHcmlkU2NyZWVuQnVpbGRlcn1cbiAgICogQHNlZSB7QGxpbmsgRHluYW1pY0dyaWRTY3JlZW5CdWlsZGVyfVxuICAgKiBAc2VlIHtAbGluayBEZWZhdWx0U2NyZWVuQnVpbGRlcn1cbiAgICogQHNlZSB7QGxpbmsgQ2FsZW5kYXJTY3JlZW5CdWlsZGVyfVxuICAgKiBAc2VlIHtAbGluayBEb2N1bWVudFNjcmVlbkJ1aWxkZXJ9XG4gICAqIEBzZWUge0BsaW5rIEZ1bGxTY3JlZW5CdWlsZGVyfVxuICAgKiBAc2VlIHtAbGluayBUYWJzU2NyZWVuQnVpbGRlcn1cbiAgICogQHNlZSB7QGxpbmsgV2l6YXJkU2NyZWVuQnVpbGRlcn1cbiAgICovXG4gIHJlYWRvbmx5IGFkZFNjcmVlbiA9IHtcbiAgICBjYWxlbmRhcjogYXNzaWduQnVpbGRlckJ5SW5wdXRGYWN0b3J5KFxuICAgICAgQ2FsZW5kYXJTY3JlZW5CdWlsZGVyLFxuICAgICAgJ3NjcmVlbklkJyxcbiAgICAgIHRoaXMuX2NvbmZpZy5qaWdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICksXG4gICAgZGVmYXVsdDogYXNzaWduQnVpbGRlckJ5SW5wdXRGYWN0b3J5KFxuICAgICAgRGVmYXVsdFNjcmVlbkJ1aWxkZXIsXG4gICAgICAnc2NyZWVuSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmppZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICBkb2N1bWVudDogYXNzaWduQnVpbGRlckJ5SW5wdXRGYWN0b3J5KFxuICAgICAgRG9jdW1lbnRTY3JlZW5CdWlsZGVyLFxuICAgICAgJ3NjcmVlbklkJyxcbiAgICAgIHRoaXMuX2NvbmZpZy5qaWdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICksXG4gICAgZnVsbFNjcmVlbjogYXNzaWduQnVpbGRlckJ5SW5wdXRGYWN0b3J5KFxuICAgICAgRnVsbFNjcmVlbkJ1aWxkZXIsXG4gICAgICAnc2NyZWVuSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmppZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICBzdGF0aWNHcmlkOiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBTdGF0aWNHcmlkU2NyZWVuQnVpbGRlcixcbiAgICAgICdzY3JlZW5JZCcsXG4gICAgICB0aGlzLl9jb25maWcuamlncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApLFxuICAgIGR5bmFtaWNHcmlkOiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBEeW5hbWljR3JpZFNjcmVlbkJ1aWxkZXIsXG4gICAgICAnc2NyZWVuSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmppZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICBnYWxsZXJ5OiBhc3NpZ25CdWlsZGVyQnlJbnB1dEZhY3RvcnkoXG4gICAgICBHYWxsZXJ5U2NyZWVuQnVpbGRlcixcbiAgICAgICdzY3JlZW5JZCcsXG4gICAgICB0aGlzLl9jb25maWcuamlncyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApLFxuICAgIGxpc3Q6IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeShcbiAgICAgIExpc3RTY3JlZW5CdWlsZGVyLFxuICAgICAgJ3NjcmVlbklkJyxcbiAgICAgIHRoaXMuX2NvbmZpZy5qaWdzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICksXG4gICAgdGFiczogYXNzaWduQnVpbGRlckJ5SW5wdXRGYWN0b3J5KFxuICAgICAgVGFic1NjcmVlbkJ1aWxkZXIsXG4gICAgICAnc2NyZWVuSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmppZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICB3aXphcmQ6IGFzc2lnbkJ1aWxkZXJCeUlucHV0RmFjdG9yeShcbiAgICAgIFdpemFyZFNjcmVlbkJ1aWxkZXIsXG4gICAgICAnc2NyZWVuSWQnLFxuICAgICAgdGhpcy5fY29uZmlnLmppZ3MgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKSxcbiAgICBzY3JlZW5zOiB0aGlzLl9jb25maWcuamlncyBhcyBSZWNvcmQ8c3RyaW5nLCBTY3JlZW5CdWlsZGVyPixcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciBjb25maWd1cmluZyB0aGUgYXBwbGljYXRpb24ncyBsb2NhbCBTUUxpdGUgZGF0YWJhc2UuXG4gICAqXG4gICAqIEV2ZXJ5IGFwcGxpY2F0aW9uIGhhcyBhIGRlZmF1bHQgZGF0YWJhc2UgZm9yIHN0b3JpbmcgbG9jYWwgZGF0YS5cbiAgICogVXNlIHRoaXMgdG8gZGVmaW5lIHRhYmxlcyB0aGF0IHdpbGwgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkRGF0YWJhc2UgPSB7XG4gICAgZGVmYXVsdDogKHRoaXMuX2NvbmZpZy5kYXRhYmFzZXMgYXMgeyBkZWZhdWx0OiBEZWZhdWx0RGF0YWJhc2VCdWlsZGVyIH0pLmRlZmF1bHQsXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFwcGxpY2F0aW9uIGJ1aWxkZXIgd2l0aCB2YWxpZGF0ZWQgcGFyYW1ldGVycy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMubmFtZSAtIFVuaXF1ZSBpZGVudGlmaWVyLiBMb3dlcmNhc2UgMi01MCwgcHJlZmVyIGtlYmFiLWNhc2UsIHN0YXJ0cyBhbHBoYSwgZW5kcyBhbHBoYW51bS5cbiAgICogQHBhcmFtIG9wdGlvbnMudGl0bGUgLSBEaXNwbGF5IHRpdGxlIHNob3duIGluIEppZ3ggaG9tZSBodWIgKGRlZmF1bHRzIHRvIG5hbWUpXG4gICAqIEBwYXJhbSBvcHRpb25zLmRlc2NyaXB0aW9uIC0gRXhwbGFpbnMgYXBwbGljYXRpb24gcHVycG9zZVxuICAgKiBAcGFyYW0gb3B0aW9ucy5jYXRlZ29yeSAtIENsYXNzaWZpY2F0aW9uIGZvciBvcmdhbml6aW5nIHNvbHV0aW9ucyAoZGVmYXVsdHMgdG8gJ21pc2NlbGxhbmVvdXMnKVxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gV2hlbiBuYW1lIGRvZXNuJ3QgbWF0Y2ggcmVxdWlyZWQgcGF0dGVyblxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQXBwbGljYXRpb25JbnB1dCkge1xuICAgIHN1cGVyKClcbiAgICBjb25zdCB7IG5hbWUgfSA9IG9wdGlvbnNcbiAgICB0aGlzLl9jb25maWcubmFtZSA9IHRvQXBwbGljYXRpb25OYW1lKG5hbWUpXG4gICAgdGhpcy5fY29uZmlnLnRpdGxlID0gb3B0aW9ucy50aXRsZSB8fCBuYW1lXG4gICAgdGhpcy5fY29uZmlnLmNhdGVnb3J5ID0gJ21pc2NlbGxhbmVvdXMnXG4gICAgdGhpcy5fY29uZmlnLnJ1bnRpbWVTY2hlbWFWZXJzaW9uID0gUlVOVElNRV9TQ0hFTUFfVkVSU0lPTlxuICAgIHRoaXMud2l0aChvcHRpb25zKVxuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGZpZWxkcy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBQYXJ0aWFsIGFwcGxpY2F0aW9uIGlucHV0IChuYW1lIGlzIGV4Y2x1ZGVkLCBzZXQgb25seSBpbiBjb25zdHJ1Y3RvcilcbiAgICovXG4gIHdpdGgob3B0aW9uczogUGFydGlhbDxPbWl0PEFwcGxpY2F0aW9uSW5wdXQsICduYW1lJz4+KTogdGhpcyB7XG4gICAgaWYgKG9wdGlvbnMudGl0bGUgIT09IHVuZGVmaW5lZCkgdGhpcy5fY29uZmlnLnRpdGxlID0gb3B0aW9ucy50aXRsZVxuICAgIGlmIChvcHRpb25zLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHRoaXMuX2NvbmZpZy5kZXNjcmlwdGlvbiA9IG9wdGlvbnMuZGVzY3JpcHRpb25cbiAgICBpZiAob3B0aW9ucy5jYXRlZ29yeSAhPT0gdW5kZWZpbmVkKSB0aGlzLl9jb25maWcuY2F0ZWdvcnkgPSBvcHRpb25zLmNhdGVnb3J5XG4gICAgaWYgKG9wdGlvbnMudHlwZSAhPT0gdW5kZWZpbmVkKSB0aGlzLl9jb25maWcudHlwZSA9IG9wdGlvbnMudHlwZVxuICAgIGlmIChvcHRpb25zLmltYWdlVXJsICE9PSB1bmRlZmluZWQpIHRoaXMuX2NvbmZpZy5pbWFnZVVybCA9IG9wdGlvbnMuaW1hZ2VVcmxcbiAgICBpZiAob3B0aW9ucy5zdGF0ZSAhPT0gdW5kZWZpbmVkKSB0aGlzLl9jb25maWcuc3RhdGUgPSBvcHRpb25zLnN0YXRlXG4gICAgaWYgKG9wdGlvbnMucGVybWlzc2lvbnMgIT09IHVuZGVmaW5lZCkgdGhpcy5fY29uZmlnLnBlcm1pc3Npb25zID0gb3B0aW9ucy5wZXJtaXNzaW9uc1xuICAgIGlmIChvcHRpb25zLmRlcGVuZGVuY2llcyAhPT0gdW5kZWZpbmVkKSB0aGlzLl9jb25maWcuZGVwZW5kZW5jaWVzID0gb3B0aW9ucy5kZXBlbmRlbmNpZXNcbiAgICBpZiAob3B0aW9ucy5wcm9maWxlICE9PSB1bmRlZmluZWQpIHRoaXMuX2NvbmZpZy5wcm9maWxlID0gb3B0aW9ucy5wcm9maWxlXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSByZXVzYWJsZSBKU09OYXRhIGV4cHJlc3Npb24gdG8gdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBFeHByZXNzaW9ucyBjYW4gYmUgcmVmZXJlbmNlZCB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvbiB1c2luZyB0aGUgc3ludGF4XG4gICAqIGA9QGN0eC5zb2x1dGlvbi5leHByZXNzaW9ucy57bmFtZX1gLiBUaGlzIHByb21vdGVzIGNvZGUgcmV1c2UgYW5kXG4gICAqIG1haW50YWluYWJpbGl0eS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBFeHByZXNzaW9uIGlkZW50aWZpZXJcbiAgICogQHBhcmFtIGpzb25hdGEgLSBKU09OYXRhIGV4cHJlc3Npb24gKHdpdGggb3Igd2l0aG91dCBsZWFkaW5nID0pXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBmb3IgY2hhaW5pbmdcbiAgICovXG4gIGV4cHJlc3Npb24obmFtZTogc3RyaW5nLCBqc29uYXRhOiBzdHJpbmcgfCBFeHByZXNzaW9uIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB0aGlzIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5leHByZXNzaW9ucykgdGhpcy5fY29uZmlnLmV4cHJlc3Npb25zID0ge31cbiAgICBjb25zdCBleHByZXNzaW9ucyA9IHRoaXMuX2NvbmZpZy5leHByZXNzaW9ucyBhcyBSZWNvcmQ8XG4gICAgICBzdHJpbmcsXG4gICAgICBFeHByZXNzaW9uIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICA+XG4gICAgaWYgKHR5cGVvZiBqc29uYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgZXhwcmVzc2lvbnNbbmFtZV0gPSBqc29uYXRhXG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cHJlc3Npb25zW25hbWVdID0gdG9FeHByZXNzaW9uKGpzb25hdGEpXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIGhvbWUgc2NyZWVuIHRhYnMgZm9yIG9yZ2FuaXppbmcgY29udGVudC5cbiAgICpcbiAgICogVGFicyBwcm92aWRlIG5hdmlnYXRpb24gYXQgdGhlIHRvcCBvZiB0aGUgYXBwbGljYXRpb24ncyBob21lIHNjcmVlbi5cbiAgICogVGhpcyBpcyB0aGUgbW9kZXJuIHJlcGxhY2VtZW50IGZvciB0aGUgZGVwcmVjYXRlZCB3aWRnZXRzIGFwcHJvYWNoLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRhYiBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSBvcHRpb25zLnNjcmVlbklkIC0gU2NyZWVuIHRvIG5hdmlnYXRlIHRvIHdoZW4gc2VsZWN0ZWRcbiAgICogQHBhcmFtIG9wdGlvbnMuaWNvbiAtIEljb24gbmFtZSBvciBleHByZXNzaW9uXG4gICAqIEBwYXJhbSBvcHRpb25zLnRhYklkIC0gT3B0aW9uYWwgdGFiIGtleS4gRGVmYXVsdHMgdG8gYHNjcmVlbklkYC5cbiAgICogQHBhcmFtIG9wdGlvbnMubGFiZWwgLSBPcHRpb25hbCBsYWJlbCB0ZXh0XG4gICAqIEBwYXJhbSBvcHRpb25zLmJhZGdlIC0gT3B0aW9uYWwgYmFkZ2UgaW5kaWNhdG9yXG4gICAqIEBwYXJhbSBvcHRpb25zLndoZW4gLSBPcHRpb25hbCB2aXNpYmlsaXR5IGNvbmRpdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYWRkVGFiID0gY3JlYXRlQnVpbGRlckZhY3RvcnkoQXBwbGljYXRpb25UYWJCdWlsZGVyLCAoYnVpbGRlcikgPT4ge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnRhYnMpIHRoaXMuX2NvbmZpZy50YWJzID0ge31cbiAgICA7KHRoaXMuX2NvbmZpZy50YWJzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtidWlsZGVyLnRhYklkXSA9IGJ1aWxkZXJcbiAgfSlcblxuICAvKipcbiAgICogQ3JlYXRlICoqZ2xvYmFsKiogYWN0aW9uIGRlZmluaXRpb24gcmV1c2FibGUgYWNyb3NzIGppZ3MuXG4gICAqIEFjdGlvbnMgY3JlYXRlZCBoZXJlIGNhbiBiZSByZWZlcmVuY2VkIHRocm91Z2hvdXQgdGhlIGFwcGxpY2F0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkQWN0aW9uID0gYXNzaWduQnVpbGRlckJ5SW5wdXRGYWN0b3J5KFxuICAgIEFjdGlvbkRlZmluaXRpb25CdWlsZGVyLFxuICAgICdhY3Rpb25JZCcsXG4gICAgdGhpcy5fY29uZmlnLmFjdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIClcblxuICAvKipcbiAgICogQ29uc2lkZXIgdXNpbmcgQGN0eC5zb2x1dGlvbi5uYW1lIGluc3RlYWQuXG4gICAqL1xuICBnZXQgbmFtZSgpOiBBcHBsaWNhdGlvbk5hbWUge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcubmFtZSBhcyBBcHBsaWNhdGlvbk5hbWVcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbWV0YWRhdGFcbiAgICovXG4gIG1ldGFkYXRhKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHRoaXMge1xuICAgIGlmICghdGhpcy5fY29uZmlnLm1ldGFkYXRhKSB0aGlzLl9jb25maWcubWV0YWRhdGEgPSB7fVxuICAgIDsodGhpcy5fY29uZmlnLm1ldGFkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldID0gdmFsdWVcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZ2V0U3RhdGVSZWYoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IHZhbGlkYXRlIGtleSwgIGhvdz9cbiAgICByZXR1cm4gYEBjdHguc29sdXRpb24uc3RhdGUuJHtrZXl9YFxuICB9XG5cbiAgZ2V0RXhwcmVzc2lvblJlZihuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIC8vIFRPRE86IHZhbGlkYXRlIG5hbWUsIGhvdz9cbiAgICByZXR1cm4gYEBjdHguZXhwcmVzc2lvbnMuJHtuYW1lfWBcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSByZWdpc3RlcmVkIGV4cHJlc3Npb24gdmFsdWUgYnkgbmFtZS5cbiAgICogQHBhcmFtIG5hbWUgLSBFeHByZXNzaW9uIGlkZW50aWZpZXJcbiAgICogQHJldHVybnMgVGhlIGV4cHJlc3Npb24gdmFsdWUsIG9yIHVuZGVmaW5lZCBpZiBub3QgcmVnaXN0ZXJlZFxuICAgKi9cbiAgZ2V0RXhwcmVzc2lvbihuYW1lOiBzdHJpbmcpOiBFeHByZXNzaW9uIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGV4cHJlc3Npb25zID0gdGhpcy5fY29uZmlnLmV4cHJlc3Npb25zIGFzXG4gICAgICB8IFJlY29yZDxzdHJpbmcsIEV4cHJlc3Npb24gfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5cbiAgICAgIHwgdW5kZWZpbmVkXG4gICAgcmV0dXJuIGV4cHJlc3Npb25zPy5bbmFtZV1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgY3VzdG9tIHNjcmlwdCAocmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UpXG4gICAqIEBwYXJhbSBuYW1lIC0gU2NyaXB0IG5hbWUvaWRlbnRpZmllclxuICAgKiBAcGFyYW0gc2NyaXB0IC0gU2NyaXB0IGNvbnRlbnQgb3IgY29uZmlndXJhdGlvblxuICAgKi9cbiAgc2NyaXB0KG5hbWU6IHN0cmluZywgc2NyaXB0OiB1bmtub3duKTogdGhpcyB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuc2NyaXB0cykgdGhpcy5fY29uZmlnLnNjcmlwdHMgPSB7fVxuICAgIDsodGhpcy5fY29uZmlnLnNjcmlwdHMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW25hbWVdID0gc2NyaXB0XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgaW50ZXJuYXRpb25hbGl6YXRpb24gdHJhbnNsYXRpb25cbiAgICogQHBhcmFtIGxvY2FsZSAtIExvY2FsZSBpZGVudGlmaWVyIChlLmcuLCAnZW4nLCAnZXMnLCAnZnInKVxuICAgKiBAcGFyYW0gdHJhbnNsYXRpb25zIC0gVHJhbnNsYXRpb24ga2V5LXZhbHVlIHBhaXJzXG4gICAqL1xuICB0cmFuc2xhdGlvbihsb2NhbGU6IHN0cmluZywgdHJhbnNsYXRpb25zOiB1bmtub3duKTogdGhpcyB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcudHJhbnNsYXRpb25zKSB0aGlzLl9jb25maWcudHJhbnNsYXRpb25zID0ge31cbiAgICA7KHRoaXMuX2NvbmZpZy50cmFuc2xhdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2xvY2FsZV0gPSB0cmFuc2xhdGlvbnNcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBkYXRhYmFzZSB0YWJsZSBjaGFuZ2UgbGlzdGVuZXJcbiAgICogQHBhcmFtIGxpc3RlbmVyIC0gVGFibGUgY2hhbmdlIGxpc3RlbmVyIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIG9uVGFibGVDaGFuZ2VkKGxpc3RlbmVyOiB1bmtub3duKTogdGhpcyB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcub25UYWJsZUNoYW5nZWQpIHRoaXMuX2NvbmZpZy5vblRhYmxlQ2hhbmdlZCA9IFtdXG4gICAgOyh0aGlzLl9jb25maWcub25UYWJsZUNoYW5nZWQgYXMgdW5rbm93bltdKS5wdXNoKGxpc3RlbmVyKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIHRoZW1lIHBhbGV0dGUgZm9yIHRoZSBhcHBsaWNhdGlvblxuICAgKiBAcGFyYW0gcGFsZXR0ZSAtIENvbG9yIHBhbGV0dGUgZGVmaW5pdGlvblxuICAgKi9cbiAgdGhlbWVQYWxldHRlKHBhbGV0dGU6IHVua25vd24pOiB0aGlzIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5hc3NldHMpIHRoaXMuX2NvbmZpZy5hc3NldHMgPSB7fVxuICAgIGNvbnN0IGFzc2V0cyA9IHRoaXMuX2NvbmZpZy5hc3NldHMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICBpZiAoIWFzc2V0cy50aGVtZSkgYXNzZXRzLnRoZW1lID0ge31cbiAgICA7KGFzc2V0cy50aGVtZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikucGFsZXR0ZSA9IHBhbGV0dGVcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBpbWFnZSBVUkxzIHRvIHRoZSBhcHBsaWNhdGlvbiBhc3NldHNcbiAgICogQHBhcmFtIGltYWdlcyAtIEFycmF5IG9mIGltYWdlIFVSTHNcbiAgICovXG4gIGltYWdlcyguLi5pbWFnZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuYXNzZXRzKSB0aGlzLl9jb25maWcuYXNzZXRzID0ge31cbiAgICBjb25zdCBhc3NldHMgPSB0aGlzLl9jb25maWcuYXNzZXRzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgaWYgKCFhc3NldHMuaW1hZ2VzKSBhc3NldHMuaW1hZ2VzID0gW11cbiAgICA7KGFzc2V0cy5pbWFnZXMgYXMgc3RyaW5nW10pLnB1c2goLi4uaW1hZ2VzKVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQWRkIGljb24gcmVmZXJlbmNlcyB0byB0aGUgYXBwbGljYXRpb24gYXNzZXRzXG4gICAqIEBwYXJhbSBpY29ucyAtIEFycmF5IG9mIGljb24gbmFtZXNcbiAgICovXG4gIGljb25zKC4uLmljb25zOiBJY29uTmFtZVtdKTogdGhpcyB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuYXNzZXRzKSB0aGlzLl9jb25maWcuYXNzZXRzID0ge31cbiAgICBjb25zdCBhc3NldHMgPSB0aGlzLl9jb25maWcuYXNzZXRzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgaWYgKCFhc3NldHMuaWNvbnMpIGFzc2V0cy5pY29ucyA9IFtdXG4gICAgOyhhc3NldHMuaWNvbnMgYXMgSWNvbk5hbWVbXSkucHVzaCguLi5pY29ucylcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEFjdGlvbiBleGVjdXRlZCB3aGVuIGFwcGxpY2F0aW9uIGxvYWRzLlxuICAgKi9cbiAgcmVhZG9ubHkgb25Mb2FkID0gY3JlYXRlQWN0aW9uSW5CYWNrZ3JvdW5kQnVpbGRlcnNGYWN0b3J5KChhY3Rpb24pID0+IHtcbiAgICB0aGlzLl9jb25maWcub25Mb2FkID0gYWN0aW9uXG4gIH0pXG5cbiAgLyoqXG4gICAqIEFjdGlvbiBleGVjdXRlZCB3aGVuIGFwcGxpY2F0aW9uIGdhaW5zIGZvY3VzLlxuICAgKi9cbiAgcmVhZG9ubHkgb25Gb2N1cyA9IGNyZWF0ZUFjdGlvbkluQmFja2dyb3VuZEJ1aWxkZXJzRmFjdG9yeSgoYWN0aW9uKSA9PiB7XG4gICAgdGhpcy5fY29uZmlnLm9uRm9jdXMgPSBhY3Rpb25cbiAgfSlcblxuICAvKipcbiAgICogQWN0aW9uIGV4ZWN1dGVkIG9uIHB1bGwtdG8tcmVmcmVzaC5cbiAgICovXG4gIHJlYWRvbmx5IG9uUmVmcmVzaCA9IGNyZWF0ZUFjdGlvbkluQmFja2dyb3VuZEJ1aWxkZXJzRmFjdG9yeSgoYWN0aW9uKSA9PiB7XG4gICAgdGhpcy5fY29uZmlnLm9uUmVmcmVzaCA9IGFjdGlvblxuICB9KVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbiBpbmNsdWRpbmcgYWxsIHNjcmVlbnMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIGJ1aWxkKCkgdG8gZW5zdXJlIHRoZSBhcHBsaWNhdGlvblxuICAgKiBjb25maWd1cmF0aW9uIGlzIHZhbGlkLiBJdCBpdGVyYXRlcyB0aHJvdWdoIGFsbCBzY3JlZW5zIGFuZCBjYWxscyB0aGVpclxuICAgKiBfdmFsaWRhdGUoKSBtZXRob2RzLlxuICAgKlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gV2hlbiB2YWxpZGF0aW9uIGZhaWxzXG4gICAqL1xuICBfdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgY29uc3Qgc2NyZWVucyA9IHRoaXMuX2NvbmZpZy5qaWdzIGFzIFJlY29yZDxzdHJpbmcsIFNjcmVlbkJ1aWxkZXI+XG4gICAgZm9yIChjb25zdCBzY3JlZW4gb2YgT2JqZWN0LnZhbHVlcyhzY3JlZW5zKSkge1xuICAgICAgc2NyZWVuLl92YWxpZGF0ZSgpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gdGhlIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBidWlsZCgpOiBBcHBsaWNhdGlvbiB7XG4gICAgdGhpcy5fdmFsaWRhdGUoKVxuXG4gICAgLy8gUmVnaXN0ZXIgZHluYW1pYyB0YWJsZXMgb24gZGVmYXVsdCBkYXRhYmFzZSBiZWZvcmUgYnVpbGRpbmdcbiAgICB0aGlzLnJlZ2lzdGVyUmVxdWlyZWRUYWJsZXMoKVxuXG4gICAgLy8gRXh0cmFjdCBzY3JpcHRzIGZvciBzcGVjaWFsIHRyYW5zZm9ybWF0aW9uIChzY3JpcHRzIC0+IHsgZXhwcmVzc2lvbnM6IHNjcmlwdHMgfSlcbiAgICBjb25zdCB7IHNjcmlwdHMsIC4uLmNvbmZpZ1Jlc3QgfSA9IHRoaXMuX2NvbmZpZ1xuICAgIGNvbnN0IHNjcmlwdE91dHB1dCA9XG4gICAgICBzY3JpcHRzICYmIE9iamVjdC5rZXlzKHNjcmlwdHMgYXMgb2JqZWN0KS5sZW5ndGggPiAwXG4gICAgICAgID8geyBleHByZXNzaW9uczogeyAuLi4oc2NyaXB0cyBhcyBvYmplY3QpIH0gfVxuICAgICAgICA6IHVuZGVmaW5lZFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmJ1aWxkVHJlZShjb25maWdSZXN0KSxcbiAgICAgIC4uLihzY3JpcHRPdXRwdXQgPyB7IHNjcmlwdHM6IHNjcmlwdE91dHB1dCB9IDoge30pLFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTY2FuIGFsbCBkYXRhc291cmNlcyAoYXBwLWxldmVsIGFuZCBzY3JlZW4tbGV2ZWwpIGZvciBkeW5hbWljIHNxbGl0ZVxuICAgKiBlbnRpdGllcyBhbmQgcmVnaXN0ZXIgdGhlaXIgcmVxdWlyZWQgdGFibGVzIG9uIHRoZSBkZWZhdWx0IGRhdGFiYXNlLlxuICAgKi9cbiAgcHJpdmF0ZSByZWdpc3RlclJlcXVpcmVkVGFibGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGRiID0gdGhpcy5hZGREYXRhYmFzZS5kZWZhdWx0XG5cbiAgICBjb25zdCByZWdpc3RlckZyb21EYXRhc291cmNlcyA9IChkYXRhc291cmNlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkID0+IHtcbiAgICAgIGZvciAoY29uc3QgZHMgb2YgT2JqZWN0LnZhbHVlcyhkYXRhc291cmNlcykpIHtcbiAgICAgICAgaWYgKGRzIGluc3RhbmNlb2YgU3FsaXRlRGF0YXNvdXJjZUJ1aWxkZXIpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHRhYmxlIG9mIGRzLmdldFJlcXVpcmVkVGFibGVzKCkpIHtcbiAgICAgICAgICAgIGRiLnRhYmxlKHRhYmxlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFwcC1sZXZlbCBkYXRhc291cmNlc1xuICAgIHJlZ2lzdGVyRnJvbURhdGFzb3VyY2VzKHRoaXMuX2NvbmZpZy5kYXRhc291cmNlcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcblxuICAgIC8vIFNjcmVlbi1sZXZlbCBkYXRhc291cmNlc1xuICAgIGNvbnN0IHNjcmVlbnMgPSB0aGlzLl9jb25maWcuamlncyBhcyBSZWNvcmQ8c3RyaW5nLCBTY3JlZW5CdWlsZGVyPlxuICAgIGZvciAoY29uc3Qgc2NyZWVuIG9mIE9iamVjdC52YWx1ZXMoc2NyZWVucykpIHtcbiAgICAgIGZvciAoY29uc3QgdGFibGUgb2Ygc2NyZWVuLmNvbGxlY3RSZXF1aXJlZFRhYmxlcygpKSB7XG4gICAgICAgIGRiLnRhYmxlKHRhYmxlKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRvIEpTT04gc3RyaW5nIHdpdGggZm9ybWF0dGluZyBvcHRpb25zXG4gICAqL1xuICB0b0pTT04ob3B0aW9ucz86IHsgaW5kZW50PzogbnVtYmVyOyBzb3J0S2V5cz86IGJvb2xlYW4gfSk6IHN0cmluZyB7XG4gICAgY29uc3QgeyBpbmRlbnQgPSAyLCBzb3J0S2V5cyA9IGZhbHNlIH0gPSBvcHRpb25zIHx8IHt9XG4gICAgY29uc3Qgb2JqID0gdGhpcy5idWlsZCgpXG4gICAgY29uc3QgZGF0YSA9IHNvcnRLZXlzID8gc29ydE9iamVjdChvYmopIDogb2JqXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIGluZGVudClcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRvIFlBTUwgc3RyaW5nXG4gICAqL1xuICB0b1lBTUwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gWUFNTC5zdHJpbmdpZnkodGhpcy5idWlsZCgpKVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseBuilder, type Expression, type InstanceId, type ScreenId, type When } from '../abstract/index.js';
|
|
2
|
+
import { type IconName } from '../icon/index.js';
|
|
3
|
+
export interface ApplicationTabInput {
|
|
4
|
+
readonly screenId: ScreenId;
|
|
5
|
+
readonly icon: IconName | Expression;
|
|
6
|
+
readonly tabId?: InstanceId;
|
|
7
|
+
readonly label?: string | Expression;
|
|
8
|
+
readonly badge?: number | boolean | Expression;
|
|
9
|
+
readonly when?: When;
|
|
10
|
+
}
|
|
11
|
+
export declare class ApplicationTabBuilder extends BaseBuilder {
|
|
12
|
+
protected readonly _config: Record<string, unknown>;
|
|
13
|
+
readonly screenId: ScreenId;
|
|
14
|
+
readonly tabId: InstanceId;
|
|
15
|
+
constructor(options: ApplicationTabInput);
|
|
16
|
+
with(options: Partial<Omit<ApplicationTabInput, 'screenId' | 'icon' | 'tabId'>>): this;
|
|
17
|
+
_validate(): void;
|
|
18
|
+
build(): Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24udGFiLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwbGljYXRpb24vYXBwbGljYXRpb24udGFiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxXQUFXLEVBQ1gsS0FBSyxVQUFVLEVBRWYsS0FBSyxVQUFVLEVBQ2YsS0FBSyxRQUFRLEVBS2IsS0FBSyxJQUFJLEVBQ1YsTUFBTSxzQkFBc0IsQ0FBQTtBQUM3QixPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQTBCLE1BQU0sa0JBQWtCLENBQUE7QUFLeEUsTUFBTSxXQUFXLG1CQUFtQjtJQUNsQyxRQUFRLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQTtJQUMzQixRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsR0FBRyxVQUFVLENBQUE7SUFDcEMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLFVBQVUsQ0FBQTtJQUMzQixRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FBQTtJQUNwQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sR0FBRyxVQUFVLENBQUE7SUFDOUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQTtDQUNyQjtBQTZCRCxxQkFBYSxxQkFBc0IsU0FBUSxXQUFXO0lBQ3BELFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUs7SUFHeEQsUUFBUSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUE7SUFHM0IsUUFBUSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUE7SUFZMUIsWUFBWSxPQUFPLEVBQUUsbUJBQW1CLEVBT3ZDO0lBT0QsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFVBQVUsR0FBRyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFJLENBV3JGO0lBRUQsU0FBUyxJQUFJLElBQUksQ0FBRztJQUVwQixLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FpQi9CO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlQnVpbGRlcixcbiAgdHlwZSBFeHByZXNzaW9uLFxuICBpc0V4cHJlc3Npb24sXG4gIHR5cGUgSW5zdGFuY2VJZCxcbiAgdHlwZSBTY3JlZW5JZCxcbiAgdG9FeHByZXNzaW9uLFxuICB0b0luc3RhbmNlSWQsXG4gIHRvU2NyZWVuSWQsXG4gIHRvV2hlbixcbiAgdHlwZSBXaGVuLFxufSBmcm9tICcuLi9hYnN0cmFjdC9pbmRleC5qcydcbmltcG9ydCB7IHR5cGUgSWNvbk5hbWUsIHRvSWNvbk5hbWVPckV4cHJlc3Npb24gfSBmcm9tICcuLi9pY29uL2luZGV4LmpzJ1xuXG4vKipcbiAqIElucHV0IGZvciBjcmVhdGluZyBhbiBhcHBsaWNhdGlvbiB0YWIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbGljYXRpb25UYWJJbnB1dCB7XG4gIHJlYWRvbmx5IHNjcmVlbklkOiBTY3JlZW5JZFxuICByZWFkb25seSBpY29uOiBJY29uTmFtZSB8IEV4cHJlc3Npb25cbiAgcmVhZG9ubHkgdGFiSWQ/OiBJbnN0YW5jZUlkXG4gIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nIHwgRXhwcmVzc2lvblxuICByZWFkb25seSBiYWRnZT86IG51bWJlciB8IGJvb2xlYW4gfCBFeHByZXNzaW9uXG4gIHJlYWRvbmx5IHdoZW4/OiBXaGVuXG59XG5cbi8qKlxuICogQnVpbGQgYXBwbGljYXRpb24gdGFiIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIENyZWF0ZSBuYXZpZ2F0aW9uIHRhYnMgbGlua2luZyB0byBzY3JlZW5zIHdpdGggaWNvbnMsIGxhYmVscywgYmFkZ2VzLCBhbmQgY29uZGl0aW9uYWwgdmlzaWJpbGl0eS5cbiAqXG4gKlxuICogIyMgQWR2YW5jZWQgVXNhZ2VcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBEeW5hbWljIGNvbnRlbnQgd2l0aCBleHByZXNzaW9uc1xuICogYXBwLmFkZFRhYih7IHNjcmVlbklkOiAnZGFzaGJvYXJkLXNjcmVlbicsIGljb246ICc9QGN0eC5jdXJyZW50Lml0ZW0uaWNvbicgfSlcbiAqICAgLndpdGgoeyBsYWJlbDogJz1AY3R4LmN1cnJlbnQuaXRlbS50aXRsZScsIGJhZGdlOiAnPUBjdHguc29sdXRpb24uc3RhdGUudGFza3MucGVuZGluZycsIHdoZW46ICc9QGN0eC5zb2x1dGlvbi5zdGF0ZS5pc0VuYWJsZWQnIH0pXG4gKlxuICogLy8gTXVsdGlwbGUgYmFkZ2UgdHlwZXNcbiAqIGFwcC5hZGRUYWIoeyBzY3JlZW5JZDogJ25vdGlmaWNhdGlvbnMnLCBpY29uOiAnYmVsbCcsIGJhZGdlOiA1IH0pICAgICAgICAgIC8vIE51bWJlciBiYWRnZVxuICogYXBwLmFkZFRhYih7IHNjcmVlbklkOiAnbm90aWZpY2F0aW9ucycsIGljb246ICdiZWxsJywgYmFkZ2U6IHRydWUgfSkgICAgICAgIC8vIEJvb2xlYW4gYmFkZ2UgKHNob3dzIGRvdClcbiAqIGFwcC5hZGRUYWIoeyBzY3JlZW5JZDogJ25vdGlmaWNhdGlvbnMnLCBpY29uOiAnYmVsbCcsIGJhZGdlOiAnPUBjdHguc29sdXRpb24uc3RhdGUuYWxlcnRzLmNvdW50JyB9KSAvLyBFeHByZXNzaW9uIGJhZGdlXG4gKiBgYGBcbiAqXG4gKiAjIyBCYWRnZSBUeXBlc1xuICpcbiAqIC0gKipOdW1iZXIqKjogU2hvd3MgbnVtZXJpYyBjb3VudCAoZS5nLiwgYDVgLCBgMjNgKVxuICogLSAqKkJvb2xlYW4qKjogU2hvd3MgaW5kaWNhdG9yIGRvdCB3aGVuIGB0cnVlYFxuICogLSAqKkV4cHJlc3Npb24qKjogRHluYW1pYyB2YWx1ZSBmcm9tIEpTT05hdGEgZXhwcmVzc2lvblxuICpcbiAqICMjIENvbmRpdGlvbmFsIFZpc2liaWxpdHlcbiAqL1xuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uVGFiQnVpbGRlciBleHRlbmRzIEJhc2VCdWlsZGVyIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge31cblxuICAvKiogVGhlIHNjcmVlbiBJRCB0aGlzIHRhYiBuYXZpZ2F0ZXMgdG8gd2hlbiBzZWxlY3RlZCAqL1xuICByZWFkb25seSBzY3JlZW5JZDogU2NyZWVuSWRcblxuICAvKiogVGFiIGtleSB1c2VkIGluIHRoZSB0YWJzIHJlY29yZCAqL1xuICByZWFkb25seSB0YWJJZDogSW5zdGFuY2VJZFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYXBwbGljYXRpb24gdGFiIGJ1aWxkZXIuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGFiIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnMuc2NyZWVuSWQgLSBTY3JlZW4gdG8gbmF2aWdhdGUgdG8gd2hlbiBzZWxlY3RlZFxuICAgKiBAcGFyYW0gb3B0aW9ucy5pY29uIC0gSWNvbiBuYW1lIG9yIGV4cHJlc3Npb25cbiAgICogQHBhcmFtIG9wdGlvbnMudGFiSWQgLSBPcHRpb25hbCB0YWIga2V5LiBEZWZhdWx0cyB0byBgc2NyZWVuSWRgLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5sYWJlbCAtIE9wdGlvbmFsIGxhYmVsIHRleHRcbiAgICogQHBhcmFtIG9wdGlvbnMuYmFkZ2UgLSBPcHRpb25hbCBiYWRnZSBpbmRpY2F0b3JcbiAgICogQHBhcmFtIG9wdGlvbnMud2hlbiAtIE9wdGlvbmFsIHZpc2liaWxpdHkgY29uZGl0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBBcHBsaWNhdGlvblRhYklucHV0KSB7XG4gICAgc3VwZXIoKVxuICAgIHRoaXMuc2NyZWVuSWQgPSB0b1NjcmVlbklkKG9wdGlvbnMuc2NyZWVuSWQpXG4gICAgdGhpcy50YWJJZCA9IHRvSW5zdGFuY2VJZChvcHRpb25zLnRhYklkID8/IHRoaXMuc2NyZWVuSWQpXG4gICAgdGhpcy5fY29uZmlnLmppZ0lkID0gdGhpcy5zY3JlZW5JZFxuICAgIHRoaXMuX2NvbmZpZy5pY29uID0gdG9JY29uTmFtZU9yRXhwcmVzc2lvbihvcHRpb25zLmljb24pXG4gICAgdGhpcy53aXRoKG9wdGlvbnMpXG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRhYiBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFBhcnRpYWwgdGFiIGNvbmZpZ3VyYXRpb24gdG8gbWVyZ2VcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGluc3RhbmNlIGZvciBtZXRob2QgY2hhaW5pbmdcbiAgICovXG4gIHdpdGgob3B0aW9uczogUGFydGlhbDxPbWl0PEFwcGxpY2F0aW9uVGFiSW5wdXQsICdzY3JlZW5JZCcgfCAnaWNvbicgfCAndGFiSWQnPj4pOiB0aGlzIHtcbiAgICBpZiAob3B0aW9ucy5sYWJlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9jb25maWcubGFiZWwgPSBpc0V4cHJlc3Npb24ob3B0aW9ucy5sYWJlbCkgPyB0b0V4cHJlc3Npb24ob3B0aW9ucy5sYWJlbCkgOiBvcHRpb25zLmxhYmVsXG4gICAgfVxuICAgIGlmIChvcHRpb25zLmJhZGdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZy5iYWRnZSA9IG9wdGlvbnMuYmFkZ2VcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMud2hlbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9jb25maWcud2hlbiA9IHRvV2hlbihvcHRpb25zLndoZW4pXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBfdmFsaWRhdGUoKTogdm9pZCB7fVxuXG4gIGJ1aWxkKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgICAgamlnSWQ6IHRoaXMuX2NvbmZpZy5qaWdJZCxcbiAgICAgIGljb246IHRoaXMuX2NvbmZpZy5pY29uLFxuICAgIH1cblxuICAgIGlmICh0aGlzLl9jb25maWcubGFiZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0LmxhYmVsID0gdGhpcy5fY29uZmlnLmxhYmVsXG4gICAgfVxuICAgIGlmICh0aGlzLl9jb25maWcuYmFkZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0LmJhZGdlID0gdGhpcy5fY29uZmlnLmJhZGdlXG4gICAgfVxuICAgIGlmICh0aGlzLl9jb25maWcud2hlbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHQud2hlbiA9IHRoaXMuX2NvbmZpZy53aGVuXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"application.tab.d.ts","sourceRoot":"","sources":["../../src/application/application.tab.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,UAAU,EAEf,KAAK,UAAU,EACf,KAAK,QAAQ,EAKb,KAAK,IAAI,EACV,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,KAAK,QAAQ,EAA0B,MAAM,kBAAkB,CAAA;AAKxE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAA;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAA;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CACrB;AA6BD,qBAAa,qBAAsB,SAAQ,WAAW;IACpD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAK;IAGxD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAG3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAY1B,YAAY,OAAO,EAAE,mBAAmB,EAOvC;IAOD,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAWrF;IAED,SAAS,IAAI,IAAI,CAAG;IAEpB,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiB/B;CACF","sourcesContent":["import {\n BaseBuilder,\n type Expression,\n isExpression,\n type InstanceId,\n type ScreenId,\n toExpression,\n toInstanceId,\n toScreenId,\n toWhen,\n type When,\n} from '../abstract/index.js'\nimport { type IconName, toIconNameOrExpression } from '../icon/index.js'\n\n/**\n * Input for creating an application tab.\n */\nexport interface ApplicationTabInput {\n readonly screenId: ScreenId\n readonly icon: IconName | Expression\n readonly tabId?: InstanceId\n readonly label?: string | Expression\n readonly badge?: number | boolean | Expression\n readonly when?: When\n}\n\n/**\n * Build application tab configurations.\n *\n * Create navigation tabs linking to screens with icons, labels, badges, and conditional visibility.\n *\n *\n * ## Advanced Usage\n *\n * ```typescript\n * // Dynamic content with expressions\n * app.addTab({ screenId: 'dashboard-screen', icon: '=@ctx.current.item.icon' })\n * .with({ label: '=@ctx.current.item.title', badge: '=@ctx.solution.state.tasks.pending', when: '=@ctx.solution.state.isEnabled' })\n *\n * // Multiple badge types\n * app.addTab({ screenId: 'notifications', icon: 'bell', badge: 5 }) // Number badge\n * app.addTab({ screenId: 'notifications', icon: 'bell', badge: true }) // Boolean badge (shows dot)\n * app.addTab({ screenId: 'notifications', icon: 'bell', badge: '=@ctx.solution.state.alerts.count' }) // Expression badge\n * ```\n *\n * ## Badge Types\n *\n * - **Number**: Shows numeric count (e.g., `5`, `23`)\n * - **Boolean**: Shows indicator dot when `true`\n * - **Expression**: Dynamic value from JSONata expression\n *\n * ## Conditional Visibility\n */\nexport class ApplicationTabBuilder extends BaseBuilder {\n protected readonly _config: Record<string, unknown> = {}\n\n /** The screen ID this tab navigates to when selected */\n readonly screenId: ScreenId\n\n /** Tab key used in the tabs record */\n readonly tabId: InstanceId\n\n /**\n * Create application tab builder.\n * @param options - Tab configuration\n * @param options.screenId - Screen to navigate to when selected\n * @param options.icon - Icon name or expression\n * @param options.tabId - Optional tab key. Defaults to `screenId`.\n * @param options.label - Optional label text\n * @param options.badge - Optional badge indicator\n * @param options.when - Optional visibility condition\n */\n constructor(options: ApplicationTabInput) {\n super()\n this.screenId = toScreenId(options.screenId)\n this.tabId = toInstanceId(options.tabId ?? this.screenId)\n this._config.jigId = this.screenId\n this._config.icon = toIconNameOrExpression(options.icon)\n this.with(options)\n }\n\n /**\n * Update tab configuration.\n * @param options - Partial tab configuration to merge\n * @returns This builder instance for method chaining\n */\n with(options: Partial<Omit<ApplicationTabInput, 'screenId' | 'icon' | 'tabId'>>): this {\n if (options.label !== undefined) {\n this._config.label = isExpression(options.label) ? toExpression(options.label) : options.label\n }\n if (options.badge !== undefined) {\n this._config.badge = options.badge\n }\n if (options.when !== undefined) {\n this._config.when = toWhen(options.when)\n }\n return this\n }\n\n _validate(): void {}\n\n build(): Record<string, unknown> {\n const result: Record<string, unknown> = {\n jigId: this._config.jigId,\n icon: this._config.icon,\n }\n\n if (this._config.label !== undefined) {\n result.label = this._config.label\n }\n if (this._config.badge !== undefined) {\n result.badge = this._config.badge\n }\n if (this._config.when !== undefined) {\n result.when = this._config.when\n }\n\n return result\n }\n}\n"]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { BaseBuilder, isExpression, toExpression, toInstanceId, toScreenId, toWhen, } from '../abstract/index.js';
|
|
2
|
+
import { toIconNameOrExpression } from '../icon/index.js';
|
|
3
|
+
export class ApplicationTabBuilder extends BaseBuilder {
|
|
4
|
+
_config = {};
|
|
5
|
+
screenId;
|
|
6
|
+
tabId;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
super();
|
|
9
|
+
this.screenId = toScreenId(options.screenId);
|
|
10
|
+
this.tabId = toInstanceId(options.tabId ?? this.screenId);
|
|
11
|
+
this._config.jigId = this.screenId;
|
|
12
|
+
this._config.icon = toIconNameOrExpression(options.icon);
|
|
13
|
+
this.with(options);
|
|
14
|
+
}
|
|
15
|
+
with(options) {
|
|
16
|
+
if (options.label !== undefined) {
|
|
17
|
+
this._config.label = isExpression(options.label) ? toExpression(options.label) : options.label;
|
|
18
|
+
}
|
|
19
|
+
if (options.badge !== undefined) {
|
|
20
|
+
this._config.badge = options.badge;
|
|
21
|
+
}
|
|
22
|
+
if (options.when !== undefined) {
|
|
23
|
+
this._config.when = toWhen(options.when);
|
|
24
|
+
}
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
_validate() { }
|
|
28
|
+
build() {
|
|
29
|
+
const result = {
|
|
30
|
+
jigId: this._config.jigId,
|
|
31
|
+
icon: this._config.icon,
|
|
32
|
+
};
|
|
33
|
+
if (this._config.label !== undefined) {
|
|
34
|
+
result.label = this._config.label;
|
|
35
|
+
}
|
|
36
|
+
if (this._config.badge !== undefined) {
|
|
37
|
+
result.badge = this._config.badge;
|
|
38
|
+
}
|
|
39
|
+
if (this._config.when !== undefined) {
|
|
40
|
+
result.when = this._config.when;
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24udGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcGxpY2F0aW9uL2FwcGxpY2F0aW9uLnRhYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUVYLFlBQVksRUFHWixZQUFZLEVBQ1osWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEdBRVAsTUFBTSxzQkFBc0IsQ0FBQTtBQUM3QixPQUFPLEVBQWlCLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUF5Q3hFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxXQUFXO0lBQ2pDLE9BQU8sR0FBNEIsRUFBRSxDQUFBO0lBRy9DLFFBQVEsQ0FBVTtJQUdsQixLQUFLLENBQVk7SUFZMUIsWUFBWSxPQUE0QixFQUFFO1FBQ3hDLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUE7UUFDbEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFBQSxDQUNuQjtJQU9ELElBQUksQ0FBQyxPQUEwRSxFQUFRO1FBQ3JGLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFBO1FBQ2hHLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUNwQyxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQUEsQ0FDWjtJQUVELFNBQVMsR0FBUyxFQUFDLENBQUM7SUFFcEIsS0FBSyxHQUE0QjtRQUMvQixNQUFNLE1BQU0sR0FBNEI7WUFDdEMsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztZQUN6QixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1NBQ3hCLENBQUE7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDbkMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQTtRQUNuQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFBO1FBQ2pDLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQTtJQUFBLENBQ2Q7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJhc2VCdWlsZGVyLFxuICB0eXBlIEV4cHJlc3Npb24sXG4gIGlzRXhwcmVzc2lvbixcbiAgdHlwZSBJbnN0YW5jZUlkLFxuICB0eXBlIFNjcmVlbklkLFxuICB0b0V4cHJlc3Npb24sXG4gIHRvSW5zdGFuY2VJZCxcbiAgdG9TY3JlZW5JZCxcbiAgdG9XaGVuLFxuICB0eXBlIFdoZW4sXG59IGZyb20gJy4uL2Fic3RyYWN0L2luZGV4LmpzJ1xuaW1wb3J0IHsgdHlwZSBJY29uTmFtZSwgdG9JY29uTmFtZU9yRXhwcmVzc2lvbiB9IGZyb20gJy4uL2ljb24vaW5kZXguanMnXG5cbi8qKlxuICogSW5wdXQgZm9yIGNyZWF0aW5nIGFuIGFwcGxpY2F0aW9uIHRhYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcHBsaWNhdGlvblRhYklucHV0IHtcbiAgcmVhZG9ubHkgc2NyZWVuSWQ6IFNjcmVlbklkXG4gIHJlYWRvbmx5IGljb246IEljb25OYW1lIHwgRXhwcmVzc2lvblxuICByZWFkb25seSB0YWJJZD86IEluc3RhbmNlSWRcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmcgfCBFeHByZXNzaW9uXG4gIHJlYWRvbmx5IGJhZGdlPzogbnVtYmVyIHwgYm9vbGVhbiB8IEV4cHJlc3Npb25cbiAgcmVhZG9ubHkgd2hlbj86IFdoZW5cbn1cblxuLyoqXG4gKiBCdWlsZCBhcHBsaWNhdGlvbiB0YWIgY29uZmlndXJhdGlvbnMuXG4gKlxuICogQ3JlYXRlIG5hdmlnYXRpb24gdGFicyBsaW5raW5nIHRvIHNjcmVlbnMgd2l0aCBpY29ucywgbGFiZWxzLCBiYWRnZXMsIGFuZCBjb25kaXRpb25hbCB2aXNpYmlsaXR5LlxuICpcbiAqXG4gKiAjIyBBZHZhbmNlZCBVc2FnZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIER5bmFtaWMgY29udGVudCB3aXRoIGV4cHJlc3Npb25zXG4gKiBhcHAuYWRkVGFiKHsgc2NyZWVuSWQ6ICdkYXNoYm9hcmQtc2NyZWVuJywgaWNvbjogJz1AY3R4LmN1cnJlbnQuaXRlbS5pY29uJyB9KVxuICogICAud2l0aCh7IGxhYmVsOiAnPUBjdHguY3VycmVudC5pdGVtLnRpdGxlJywgYmFkZ2U6ICc9QGN0eC5zb2x1dGlvbi5zdGF0ZS50YXNrcy5wZW5kaW5nJywgd2hlbjogJz1AY3R4LnNvbHV0aW9uLnN0YXRlLmlzRW5hYmxlZCcgfSlcbiAqXG4gKiAvLyBNdWx0aXBsZSBiYWRnZSB0eXBlc1xuICogYXBwLmFkZFRhYih7IHNjcmVlbklkOiAnbm90aWZpY2F0aW9ucycsIGljb246ICdiZWxsJywgYmFkZ2U6IDUgfSkgICAgICAgICAgLy8gTnVtYmVyIGJhZGdlXG4gKiBhcHAuYWRkVGFiKHsgc2NyZWVuSWQ6ICdub3RpZmljYXRpb25zJywgaWNvbjogJ2JlbGwnLCBiYWRnZTogdHJ1ZSB9KSAgICAgICAgLy8gQm9vbGVhbiBiYWRnZSAoc2hvd3MgZG90KVxuICogYXBwLmFkZFRhYih7IHNjcmVlbklkOiAnbm90aWZpY2F0aW9ucycsIGljb246ICdiZWxsJywgYmFkZ2U6ICc9QGN0eC5zb2x1dGlvbi5zdGF0ZS5hbGVydHMuY291bnQnIH0pIC8vIEV4cHJlc3Npb24gYmFkZ2VcbiAqIGBgYFxuICpcbiAqICMjIEJhZGdlIFR5cGVzXG4gKlxuICogLSAqKk51bWJlcioqOiBTaG93cyBudW1lcmljIGNvdW50IChlLmcuLCBgNWAsIGAyM2ApXG4gKiAtICoqQm9vbGVhbioqOiBTaG93cyBpbmRpY2F0b3IgZG90IHdoZW4gYHRydWVgXG4gKiAtICoqRXhwcmVzc2lvbioqOiBEeW5hbWljIHZhbHVlIGZyb20gSlNPTmF0YSBleHByZXNzaW9uXG4gKlxuICogIyMgQ29uZGl0aW9uYWwgVmlzaWJpbGl0eVxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25UYWJCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2NvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fVxuXG4gIC8qKiBUaGUgc2NyZWVuIElEIHRoaXMgdGFiIG5hdmlnYXRlcyB0byB3aGVuIHNlbGVjdGVkICovXG4gIHJlYWRvbmx5IHNjcmVlbklkOiBTY3JlZW5JZFxuXG4gIC8qKiBUYWIga2V5IHVzZWQgaW4gdGhlIHRhYnMgcmVjb3JkICovXG4gIHJlYWRvbmx5IHRhYklkOiBJbnN0YW5jZUlkXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhcHBsaWNhdGlvbiB0YWIgYnVpbGRlci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBUYWIgY29uZmlndXJhdGlvblxuICAgKiBAcGFyYW0gb3B0aW9ucy5zY3JlZW5JZCAtIFNjcmVlbiB0byBuYXZpZ2F0ZSB0byB3aGVuIHNlbGVjdGVkXG4gICAqIEBwYXJhbSBvcHRpb25zLmljb24gLSBJY29uIG5hbWUgb3IgZXhwcmVzc2lvblxuICAgKiBAcGFyYW0gb3B0aW9ucy50YWJJZCAtIE9wdGlvbmFsIHRhYiBrZXkuIERlZmF1bHRzIHRvIGBzY3JlZW5JZGAuXG4gICAqIEBwYXJhbSBvcHRpb25zLmxhYmVsIC0gT3B0aW9uYWwgbGFiZWwgdGV4dFxuICAgKiBAcGFyYW0gb3B0aW9ucy5iYWRnZSAtIE9wdGlvbmFsIGJhZGdlIGluZGljYXRvclxuICAgKiBAcGFyYW0gb3B0aW9ucy53aGVuIC0gT3B0aW9uYWwgdmlzaWJpbGl0eSBjb25kaXRpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFwcGxpY2F0aW9uVGFiSW5wdXQpIHtcbiAgICBzdXBlcigpXG4gICAgdGhpcy5zY3JlZW5JZCA9IHRvU2NyZWVuSWQob3B0aW9ucy5zY3JlZW5JZClcbiAgICB0aGlzLnRhYklkID0gdG9JbnN0YW5jZUlkKG9wdGlvbnMudGFiSWQgPz8gdGhpcy5zY3JlZW5JZClcbiAgICB0aGlzLl9jb25maWcuamlnSWQgPSB0aGlzLnNjcmVlbklkXG4gICAgdGhpcy5fY29uZmlnLmljb24gPSB0b0ljb25OYW1lT3JFeHByZXNzaW9uKG9wdGlvbnMuaWNvbilcbiAgICB0aGlzLndpdGgob3B0aW9ucylcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGFiIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gUGFydGlhbCB0YWIgY29uZmlndXJhdGlvbiB0byBtZXJnZVxuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgaW5zdGFuY2UgZm9yIG1ldGhvZCBjaGFpbmluZ1xuICAgKi9cbiAgd2l0aChvcHRpb25zOiBQYXJ0aWFsPE9taXQ8QXBwbGljYXRpb25UYWJJbnB1dCwgJ3NjcmVlbklkJyB8ICdpY29uJyB8ICd0YWJJZCc+Pik6IHRoaXMge1xuICAgIGlmIChvcHRpb25zLmxhYmVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZy5sYWJlbCA9IGlzRXhwcmVzc2lvbihvcHRpb25zLmxhYmVsKSA/IHRvRXhwcmVzc2lvbihvcHRpb25zLmxhYmVsKSA6IG9wdGlvbnMubGFiZWxcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYmFkZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fY29uZmlnLmJhZGdlID0gb3B0aW9ucy5iYWRnZVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy53aGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX2NvbmZpZy53aGVuID0gdG9XaGVuKG9wdGlvbnMud2hlbilcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIF92YWxpZGF0ZSgpOiB2b2lkIHt9XG5cbiAgYnVpbGQoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBqaWdJZDogdGhpcy5fY29uZmlnLmppZ0lkLFxuICAgICAgaWNvbjogdGhpcy5fY29uZmlnLmljb24sXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5sYWJlbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHQubGFiZWwgPSB0aGlzLl9jb25maWcubGFiZWxcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5iYWRnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXN1bHQuYmFkZ2UgPSB0aGlzLl9jb25maWcuYmFkZ2VcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NvbmZpZy53aGVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdC53aGVuID0gdGhpcy5fY29uZmlnLndoZW5cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cbn1cbiJdfQ==
|