@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,286 @@
|
|
|
1
|
+
import { DATA_PROVIDER, DATASOURCE_TYPE, isFunctionId, ParameterNameSchema, toDatabaseTableName, toDatasourceId, toEntityName, toFunctionId, toParameterName, } from '../abstract/index.js';
|
|
2
|
+
import { isFunctionCore } from '../function/index.js';
|
|
3
|
+
import { DatasourceBaseBuilder } from './datasource.abstract.js';
|
|
4
|
+
import { createValidationDatabase, replaceParameters, replaceTableName, validateSelectQuery, } from './sqlite-validator.js';
|
|
5
|
+
export class SqliteDatasourceBuilder extends DatasourceBaseBuilder {
|
|
6
|
+
_requiredTables = [];
|
|
7
|
+
_explicitQuery = false;
|
|
8
|
+
_lastFromClause;
|
|
9
|
+
constructor(options) {
|
|
10
|
+
const { datasourceId, provider, instanceId } = options;
|
|
11
|
+
super(DATASOURCE_TYPE.SQLITE, {
|
|
12
|
+
datasourceId: toDatasourceId(datasourceId),
|
|
13
|
+
instanceId,
|
|
14
|
+
});
|
|
15
|
+
this._config.provider = provider === 'local' ? DATA_PROVIDER.LOCAL : DATA_PROVIDER.DYNAMIC;
|
|
16
|
+
this._config.query = '';
|
|
17
|
+
this._config.entities = [];
|
|
18
|
+
}
|
|
19
|
+
validateParameterName(name) {
|
|
20
|
+
if (typeof name === 'string') {
|
|
21
|
+
if (name.startsWith('@')) {
|
|
22
|
+
name = name.slice(1);
|
|
23
|
+
}
|
|
24
|
+
const result = ParameterNameSchema.safeParse(name);
|
|
25
|
+
if (result.success) {
|
|
26
|
+
return result.data;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return toParameterName(name);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return name;
|
|
33
|
+
}
|
|
34
|
+
applyDefaultQuery(fromClause) {
|
|
35
|
+
if (this._explicitQuery)
|
|
36
|
+
return;
|
|
37
|
+
this._lastFromClause = fromClause;
|
|
38
|
+
if (this._config.isDocument) {
|
|
39
|
+
this._config.query = `SELECT tbl.id, tbl.data
|
|
40
|
+
FROM ${fromClause} AS tbl`;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this._config.query = `SELECT tbl.id, json_extract(tbl.data, '$.name') AS name
|
|
44
|
+
FROM ${fromClause} AS tbl`;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
getRequiredTables() {
|
|
48
|
+
return this._requiredTables;
|
|
49
|
+
}
|
|
50
|
+
registerDynamicTable(entityName) {
|
|
51
|
+
if (this._config.provider !== DATA_PROVIDER.DYNAMIC)
|
|
52
|
+
return;
|
|
53
|
+
this._requiredTables.push(toDatabaseTableName(entityName));
|
|
54
|
+
}
|
|
55
|
+
resolveFunctionId(fn) {
|
|
56
|
+
if (isFunctionCore(fn))
|
|
57
|
+
return fn.functionId;
|
|
58
|
+
if (isFunctionId(fn))
|
|
59
|
+
return fn;
|
|
60
|
+
return toFunctionId(fn);
|
|
61
|
+
}
|
|
62
|
+
query(sql) {
|
|
63
|
+
if (!sql || sql.trim() === '') {
|
|
64
|
+
throw new Error('Query cannot be empty or whitespace');
|
|
65
|
+
}
|
|
66
|
+
this._config.query = sql;
|
|
67
|
+
this._explicitQuery = true;
|
|
68
|
+
return this;
|
|
69
|
+
}
|
|
70
|
+
entity(input) {
|
|
71
|
+
const entities = this._config.entities;
|
|
72
|
+
if (typeof input === 'string') {
|
|
73
|
+
const resolved = toEntityName(input, this._config.provider === DATA_PROVIDER.DYNAMIC);
|
|
74
|
+
this.registerDynamicTable(resolved);
|
|
75
|
+
entities.push(resolved);
|
|
76
|
+
this.applyDefaultQuery(`[${resolved}]`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const resolved = toEntityName(input.entity, this._config.provider === DATA_PROVIDER.DYNAMIC);
|
|
80
|
+
this.registerDynamicTable(resolved);
|
|
81
|
+
if (input.fn) {
|
|
82
|
+
entities.push({
|
|
83
|
+
entity: resolved,
|
|
84
|
+
function: this.resolveFunctionId(input.fn),
|
|
85
|
+
functionParameters: input.params,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
entities.push({ entity: resolved });
|
|
90
|
+
}
|
|
91
|
+
this.applyDefaultQuery(`[${resolved}]`);
|
|
92
|
+
}
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
entityPackaged(name, packageName) {
|
|
96
|
+
const entities = this._config.entities;
|
|
97
|
+
entities.push({ entity: name, package: packageName });
|
|
98
|
+
this.applyDefaultQuery(`[${packageName}].[${name}]`);
|
|
99
|
+
return this;
|
|
100
|
+
}
|
|
101
|
+
param(name, type, value, options) {
|
|
102
|
+
this.parameter(name, type, {
|
|
103
|
+
required: options?.required,
|
|
104
|
+
defaultValue: options?.defaultValue,
|
|
105
|
+
});
|
|
106
|
+
this.queryParameter(name, value);
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
queryParameter(name, value) {
|
|
110
|
+
const validatedName = this.validateParameterName(name);
|
|
111
|
+
if (!this._config.queryParameters) {
|
|
112
|
+
this._config.queryParameters = {};
|
|
113
|
+
}
|
|
114
|
+
;
|
|
115
|
+
this._config.queryParameters[validatedName] = value;
|
|
116
|
+
return this;
|
|
117
|
+
}
|
|
118
|
+
parameter(name, type, options) {
|
|
119
|
+
const validatedName = this.validateParameterName(name);
|
|
120
|
+
if (!this._config.parameters) {
|
|
121
|
+
this._config.parameters = {};
|
|
122
|
+
}
|
|
123
|
+
;
|
|
124
|
+
this._config.parameters[validatedName] = {
|
|
125
|
+
type,
|
|
126
|
+
required: options?.required,
|
|
127
|
+
default: options?.defaultValue,
|
|
128
|
+
};
|
|
129
|
+
return this;
|
|
130
|
+
}
|
|
131
|
+
rewriteQuery(value = true) {
|
|
132
|
+
this._config.rewriteQuery = value;
|
|
133
|
+
return this;
|
|
134
|
+
}
|
|
135
|
+
isDocument(value = true) {
|
|
136
|
+
this._config.isDocument = value;
|
|
137
|
+
if (this._lastFromClause) {
|
|
138
|
+
this.applyDefaultQuery(this._lastFromClause);
|
|
139
|
+
}
|
|
140
|
+
return this;
|
|
141
|
+
}
|
|
142
|
+
jsonProperties(...columns) {
|
|
143
|
+
if (!this._config.jsonProperties) {
|
|
144
|
+
this._config.jsonProperties = [];
|
|
145
|
+
}
|
|
146
|
+
;
|
|
147
|
+
this._config.jsonProperties.push(...columns);
|
|
148
|
+
return this;
|
|
149
|
+
}
|
|
150
|
+
select(columns, from, where, options) {
|
|
151
|
+
this.isDocument(false);
|
|
152
|
+
from = toEntityName(from, this._config.provider === DATA_PROVIDER.DYNAMIC);
|
|
153
|
+
this.entity(from);
|
|
154
|
+
const tableAlias = options?.tableAlias || 'tbl';
|
|
155
|
+
const cols = Array.isArray(columns) ? columns : columns.split(',').map((c) => c.trim());
|
|
156
|
+
const selectCols = [`${tableAlias}.id`];
|
|
157
|
+
for (const col of cols) {
|
|
158
|
+
if (col !== 'id') {
|
|
159
|
+
selectCols.push(`json_extract(${tableAlias}.data, '$.${col}') AS ${col}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
let query = `SELECT ${selectCols.join(', ')}
|
|
163
|
+
FROM [${from}] AS ${tableAlias}`;
|
|
164
|
+
if (where)
|
|
165
|
+
query += ` WHERE ${where}`;
|
|
166
|
+
this.query(query);
|
|
167
|
+
return this;
|
|
168
|
+
}
|
|
169
|
+
selectDocument(from, options) {
|
|
170
|
+
this.isDocument(true);
|
|
171
|
+
from = toEntityName(from, this._config.provider === DATA_PROVIDER.DYNAMIC);
|
|
172
|
+
this.entity(from);
|
|
173
|
+
const tableAlias = options?.tableAlias || 'tbl';
|
|
174
|
+
let query = `SELECT ${tableAlias}.id, ${tableAlias}.data
|
|
175
|
+
FROM [${from}] AS ${tableAlias}`;
|
|
176
|
+
if (options?.where)
|
|
177
|
+
query += ` WHERE ${options.where}`;
|
|
178
|
+
this.query(query);
|
|
179
|
+
return this;
|
|
180
|
+
}
|
|
181
|
+
jsonExtract(column, options) {
|
|
182
|
+
const tableAlias = options?.tableAlias || 'tbl';
|
|
183
|
+
const columnAlias = options?.alias || column;
|
|
184
|
+
if (column === 'id')
|
|
185
|
+
return this;
|
|
186
|
+
let path = options?.path || column;
|
|
187
|
+
if (!path.startsWith('$'))
|
|
188
|
+
path = `$.${path}`;
|
|
189
|
+
const currentQuery = this._config.query;
|
|
190
|
+
if (currentQuery.includes('SELECT')) {
|
|
191
|
+
const newColumn = `json_extract(${tableAlias}.data, '${path}') AS ${columnAlias}`;
|
|
192
|
+
const modifiedQuery = currentQuery.replace(/SELECT\s+/, `SELECT ${newColumn}, `);
|
|
193
|
+
this.query(modifiedQuery);
|
|
194
|
+
}
|
|
195
|
+
return this;
|
|
196
|
+
}
|
|
197
|
+
entities(...names) {
|
|
198
|
+
names.forEach((name) => this.entity(name));
|
|
199
|
+
return this;
|
|
200
|
+
}
|
|
201
|
+
convert(property, from, to, options) {
|
|
202
|
+
if (!this._config.conversions) {
|
|
203
|
+
this._config.conversions = [];
|
|
204
|
+
}
|
|
205
|
+
let conversion;
|
|
206
|
+
if (to === 'local-uri') {
|
|
207
|
+
conversion = options?.localFilename
|
|
208
|
+
? { property, from, to, localFilename: options.localFilename }
|
|
209
|
+
: { property, from, to };
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
conversion = { property, from, to };
|
|
213
|
+
}
|
|
214
|
+
if (options?.convertHeicToJpg !== undefined) {
|
|
215
|
+
conversion.convertHeicToJpg = options.convertHeicToJpg;
|
|
216
|
+
}
|
|
217
|
+
;
|
|
218
|
+
this._config.conversions.push(conversion);
|
|
219
|
+
return this;
|
|
220
|
+
}
|
|
221
|
+
build() {
|
|
222
|
+
const query = this._config.query;
|
|
223
|
+
const entities = this._config.entities;
|
|
224
|
+
const provider = this._config.provider;
|
|
225
|
+
if (!query || query.trim() === '') {
|
|
226
|
+
throw new Error('Query cannot be empty or whitespace');
|
|
227
|
+
}
|
|
228
|
+
const tableNames = entities.map((entity) => {
|
|
229
|
+
if (typeof entity === 'string')
|
|
230
|
+
return entity;
|
|
231
|
+
if (entity.package) {
|
|
232
|
+
return `[${entity.package}].[${entity.entity}]`;
|
|
233
|
+
}
|
|
234
|
+
return entity.entity;
|
|
235
|
+
});
|
|
236
|
+
const { db, tables } = createValidationDatabase(tableNames);
|
|
237
|
+
let validationQuery = query;
|
|
238
|
+
try {
|
|
239
|
+
tables.forEach(({ safeName, normalizedName }) => {
|
|
240
|
+
if (safeName !== normalizedName) {
|
|
241
|
+
validationQuery = replaceTableName(validationQuery, normalizedName, safeName);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
validationQuery = replaceParameters(validationQuery);
|
|
245
|
+
validateSelectQuery(db, validationQuery);
|
|
246
|
+
const options = {
|
|
247
|
+
provider,
|
|
248
|
+
entities,
|
|
249
|
+
query,
|
|
250
|
+
};
|
|
251
|
+
if (this._config.queryParameters) {
|
|
252
|
+
options.queryParameters = this._config.queryParameters;
|
|
253
|
+
}
|
|
254
|
+
if (this._config.isDocument !== undefined) {
|
|
255
|
+
options.isDocument = this._config.isDocument;
|
|
256
|
+
}
|
|
257
|
+
if (this._config.rewriteQuery !== undefined) {
|
|
258
|
+
options.rewriteQuery = this._config.rewriteQuery;
|
|
259
|
+
}
|
|
260
|
+
if (this._config.jsonProperties) {
|
|
261
|
+
options.jsonProperties = this._config.jsonProperties;
|
|
262
|
+
}
|
|
263
|
+
if (this._config.conversions) {
|
|
264
|
+
options.conversions = this._config.conversions;
|
|
265
|
+
}
|
|
266
|
+
const result = {
|
|
267
|
+
type: DATASOURCE_TYPE.SQLITE,
|
|
268
|
+
datasourceId: this.datasourceId,
|
|
269
|
+
instanceId: this.instanceId,
|
|
270
|
+
options,
|
|
271
|
+
};
|
|
272
|
+
if (this._config.parameters) {
|
|
273
|
+
result.parameters = this._config.parameters;
|
|
274
|
+
}
|
|
275
|
+
return result;
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
279
|
+
throw new Error(`Invalid SQL query: ${errorMsg}\n\nQuery: ${query}`);
|
|
280
|
+
}
|
|
281
|
+
finally {
|
|
282
|
+
db.close();
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5zcWxpdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YXNvdXJjZS9kYXRhc291cmNlLnNxbGl0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsYUFBYSxFQUNiLGVBQWUsRUFNZixZQUFZLEVBRVosbUJBQW1CLEVBS25CLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsWUFBWSxFQUNaLFlBQVksRUFDWixlQUFlLEdBQ2hCLE1BQU0sc0JBQXNCLENBQUE7QUFDN0IsT0FBTyxFQUFxQixjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUN4RSxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sMEJBQTBCLENBQUE7QUFDckYsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLG1CQUFtQixHQUNwQixNQUFNLHVCQUF1QixDQUFBO0FBcUc5QixNQUFNLE9BQU8sdUJBQXdCLFNBQVEscUJBQXVDO0lBQ2pFLGVBQWUsR0FBYSxFQUFFLENBQUE7SUFDdkMsY0FBYyxHQUFHLEtBQUssQ0FBQTtJQUN0QixlQUFlLENBQW9CO0lBVTNDLFlBQVksT0FBOEIsRUFBRTtRQUMxQyxNQUFNLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDdEQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUU7WUFDNUIsWUFBWSxFQUFFLGNBQWMsQ0FBQyxZQUFZLENBQUM7WUFDMUMsVUFBVTtTQUNYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLFFBQVEsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUE7UUFDMUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFBO1FBQ3ZCLElBQUks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QUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDdkUsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsUUFBUSxjQUFjLEtBQUssRUFBRSxDQUFDLENBQUE7UUFDdEUsQ0FBQztnQkFBUyxDQUFDO1lBRVQsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ1osQ0FBQztJQUFBLENBQ0Y7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ29udmVyc2lvbkRlZmluaXRpb24sXG4gIERBVEFfUFJPVklERVIsXG4gIERBVEFTT1VSQ0VfVFlQRSxcbiAgdHlwZSBEYXRhc291cmNlSWQsXG4gIHR5cGUgRW50aXR5TmFtZSxcbiAgdHlwZSBFeHByZXNzaW9uLFxuICB0eXBlIEZ1bmN0aW9uSWQsXG4gIHR5cGUgSW5zdGFuY2VJZCxcbiAgaXNGdW5jdGlvbklkLFxuICB0eXBlIFBhcmFtZXRlck5hbWUsXG4gIFBhcmFtZXRlck5hbWVTY2hlbWEsXG4gIHR5cGUgUGFyYW1ldGVyVmFsdWUsXG4gIHR5cGUgUHJpbWl0aXZlLFxuICB0eXBlIFByaW1pdGl2ZU9yRXhwcmVzc2lvbixcbiAgdHlwZSBUYWJsZU5hbWUsXG4gIHRvRGF0YWJhc2VUYWJsZU5hbWUsXG4gIHRvRGF0YXNvdXJjZUlkLFxuICB0b0VudGl0eU5hbWUsXG4gIHRvRnVuY3Rpb25JZCxcbiAgdG9QYXJhbWV0ZXJOYW1lLFxufSBmcm9tICcuLi9hYnN0cmFjdC9pbmRleC5qcydcbmltcG9ydCB7IHR5cGUgRnVuY3Rpb25Db3JlLCBpc0Z1bmN0aW9uQ29yZSB9IGZyb20gJy4uL2Z1bmN0aW9uL2luZGV4LmpzJ1xuaW1wb3J0IHsgdHlwZSBEYXRhc291cmNlQmFzZSwgRGF0YXNvdXJjZUJhc2VCdWlsZGVyIH0gZnJvbSAnLi9kYXRhc291cmNlLmFic3RyYWN0LmpzJ1xuaW1wb3J0IHtcbiAgY3JlYXRlVmFsaWRhdGlvbkRhdGFiYXNlLFxuICByZXBsYWNlUGFyYW1ldGVycyxcbiAgcmVwbGFjZVRhYmxlTmFtZSxcbiAgdmFsaWRhdGVTZWxlY3RRdWVyeSxcbn0gZnJvbSAnLi9zcWxpdGUtdmFsaWRhdG9yLmpzJ1xuXG4vKipcbiAqIFNRTGl0ZSBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMgbWFwLlxuICovXG5leHBvcnQgdHlwZSBTcWxpdGVQYXJhbUV4cHJlc3Npb25zID0gUmVjb3JkPFBhcmFtZXRlck5hbWUsIFByaW1pdGl2ZU9yRXhwcmVzc2lvbj5cblxuLyoqXG4gKiBTUUxpdGUgZGF0YXNvdXJjZSBlbnRpdHkgY29uZmlndXJhdGlvbi5cbiAqL1xuaW50ZXJmYWNlIFNxbGl0ZURhdGFzb3VyY2VFbnRpdHkge1xuICBlbnRpdHk6IHN0cmluZ1xuICBwYWNrYWdlPzogc3RyaW5nXG4gIGZ1bmN0aW9uPzogc3RyaW5nXG4gIGZ1bmN0aW9uUGFyYW1ldGVycz86IFNxbGl0ZVBhcmFtRXhwcmVzc2lvbnNcbn1cblxuLyoqXG4gKiBTUUxpdGUgZGF0YXNvdXJjZSBwcm92aWRlciB0eXBlcy5cbiAqL1xuZXhwb3J0IHR5cGUgU3FsaXRlUHJvdmlkZXJUeXBlID0gdHlwZW9mIERBVEFfUFJPVklERVIuRFlOQU1JQyB8IHR5cGVvZiBEQVRBX1BST1ZJREVSLkxPQ0FMXG5cbi8qKlxuICogU1FMaXRlIGRhdGFzb3VyY2Ugb3B0aW9ucy5cbiAqL1xuaW50ZXJmYWNlIFNxbGl0ZURhdGFzb3VyY2VPcHRpb25zIHtcbiAgcHJvdmlkZXI6IFNxbGl0ZVByb3ZpZGVyVHlwZVxuICBlbnRpdGllczogQXJyYXk8U3FsaXRlRGF0YXNvdXJjZUVudGl0eSB8IHN0cmluZz5cbiAgcXVlcnk6IHN0cmluZ1xuICBxdWVyeVBhcmFtZXRlcnM/OiBTcWxpdGVQYXJhbUV4cHJlc3Npb25zXG4gIGlzRG9jdW1lbnQ/OiBib29sZWFuXG4gIHJld3JpdGVRdWVyeT86IGJvb2xlYW5cbiAganNvblByb3BlcnRpZXM/OiBzdHJpbmdbXSB8IG51bGxcbiAgY29udmVyc2lvbnM/OiBDb252ZXJzaW9uRGVmaW5pdGlvbltdXG59XG5cbi8qKlxuICogU1FMaXRlIGRhdGFzb3VyY2UgZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgU3FsaXRlRGF0YXNvdXJjZSA9IERhdGFzb3VyY2VCYXNlICYge1xuICByZWFkb25seSB0eXBlOiB0eXBlb2YgREFUQVNPVVJDRV9UWVBFLlNRTElURVxuICByZWFkb25seSBvcHRpb25zOiBTcWxpdGVEYXRhc291cmNlT3B0aW9uc1xuICBwYXJhbWV0ZXJzPzogUmVjb3JkPFxuICAgIFBhcmFtZXRlck5hbWUsXG4gICAge1xuICAgICAgcmVhZG9ubHkgdHlwZTogc3RyaW5nXG4gICAgICByZWFkb25seSBkZWZhdWx0PzogUGFyYW1ldGVyVmFsdWVcbiAgICAgIHJlYWRvbmx5IHJlcXVpcmVkPzogYm9vbGVhblxuICAgIH1cbiAgPlxufVxuXG4vKipcbiAqIC0tLVxuICogU3FsaXRlRGF0YXNvdXJjZUJ1aWxkZXIgUGFyYW1ldGVyIENvbnZlbnRpb25cbiAqXG4gKiAtIC5wYXJhbWV0ZXIobmFtZSwgdHlwZSwgcmVxdWlyZWQ/LCBkZWZhdWx0VmFsdWU/KVxuICogICAtIERlZmluZXMgYSAqZm9ybWFsKiBwYXJhbWV0ZXIgKG5hbWUsIHR5cGUsIHJlcXVpcmVkLCBkZWZhdWx0KVxuICogICAtIExpa2UgYSBmdW5jdGlvbiBzaWduYXR1cmUgb3IgQVBJIGNvbnRyYWN0XG4gKiAgIC0gRXhhbXBsZTpcbiAqICAgICBidWlsZGVyLnBhcmFtZXRlcigndXNlcklkJywgJ3N0cmluZycsICdyZXF1aXJlZCcpXG4gKiAgICAgYnVpbGRlci5wYXJhbWV0ZXIoJ2xpbWl0JywgJ251bWJlcicsICdvcHRpb25hbCcsIDEwKVxuICpcbiAqIC0gLnF1ZXJ5UGFyYW1ldGVyKG5hbWUsIHZhbHVlKVxuICogICAtIFNldHMgdGhlICpydW50aW1lIHZhbHVlKiBmb3IgYSBwYXJhbWV0ZXIgKGNvbnN0YW50IG9yIEpTT05hdGEgZXhwcmVzc2lvbilcbiAqICAgLSBMaWtlIHBhc3NpbmcgYW4gYXJndW1lbnQgdG8gYSBmdW5jdGlvbiBjYWxsXG4gKiAgIC0gRXhhbXBsZTpcbiAqICAgICBidWlsZGVyLnF1ZXJ5UGFyYW1ldGVyKCd1c2VySWQnLCAnPUBjdHgudXNlci5pZCcpXG4gKiAgICAgYnVpbGRlci5xdWVyeVBhcmFtZXRlcignbGltaXQnLCAyNSlcbiAqXG4gKiAtIC5wYXJhbShuYW1lKVxuICogICAtIEZsdWVudCBoZWxwZXIgZm9yIHNldHRpbmcgcXVlcnkgcGFyYW1ldGVyIHZhbHVlc1xuICogICAtIEV4YW1wbGU6XG4gKiAgICAgYnVpbGRlci5wYXJhbSgndXNlcklkJykudmFsdWUoMTIzKVxuICpcbiAqIHwgTWV0aG9kICAgICAgICAgICAgICB8IFB1cnBvc2UgICAgICAgICAgICAgICAgICAgICAgICB8IEV4YW1wbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgLnBhcmFtZXRlcigpICAgICAgICB8IERlZmluZSBwYXJhbWV0ZXIgKG5hbWUvdHlwZSkgICB8IC5wYXJhbWV0ZXIoJ3VzZXJJZCcsICdzdHJpbmcnLCAncmVxdWlyZWQnKSAgIHxcbiAqIHwgLnF1ZXJ5UGFyYW1ldGVyKCkgICB8IFNldCB2YWx1ZSBmb3IgcGFyYW1ldGVyICAgICAgICB8IC5xdWVyeVBhcmFtZXRlcigndXNlcklkJywgMTIzKSAgICAgICAgICAgICAgIHxcbiAqIHwgLnBhcmFtKCkgICAgICAgICAgICB8IEZsdWVudCB2YWx1ZSBzZXR0ZXIgKGhlbHBlcikgICB8IC5wYXJhbSgndXNlcklkJykudmFsdWUoMTIzKSAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKiAtLS1cbiAqL1xuXG4vKipcbiAqIFF1ZXJ5IGxvY2FsIFNRTGl0ZSBkYXRhYmFzZS5cbiAqXG4gKiBQcmltYXJ5IGRhdGFzb3VyY2UgZm9yIHNjcmVlbnMuIERhdGEgc3RvcmVkIGxvY2FsbHkgYXMgSlNPTi5cbiAqIFVzZSBqc29uX2V4dHJhY3QoKSBmb3IgZmllbGQgYWNjZXNzLlxuICogUHJvdmlkZXJzOiBkeW5hbWljIChjbG91ZCBzeW5jKSBvciBsb2NhbCAoZGV2aWNlLW9ubHkpLlxuICogUGFyYW1ldGVyczogJHBhcmFtTmFtZSBpbiBxdWVyaWVzLlxuICogU3luYyBkYXRhIHVzaW5nIHN5bmMtZW50aXRpZXMgYWN0aW9ucyB0cmlnZ2VyZWQgb24gb25Mb2FkL29uRm9jdXMvb25SZWZyZXNoIGV2ZW50cy5cbiAqXG4gKiBAYWxpYXMgZGF0YXNvdXJjZS5zcWxpdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTcWxpdGVEYXRhc291cmNlSW5wdXQge1xuICByZWFkb25seSBkYXRhc291cmNlSWQ6IHN0cmluZyB8IERhdGFzb3VyY2VJZFxuICByZWFkb25seSBwcm92aWRlcjogJ2R5bmFtaWMnIHwgJ2xvY2FsJ1xuICByZWFkb25seSBpbnN0YW5jZUlkPzogSW5zdGFuY2VJZFxufVxuXG5leHBvcnQgY2xhc3MgU3FsaXRlRGF0YXNvdXJjZUJ1aWxkZXIgZXh0ZW5kcyBEYXRhc291cmNlQmFzZUJ1aWxkZXI8U3FsaXRlRGF0YXNvdXJjZT4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXF1aXJlZFRhYmxlczogc3RyaW5nW10gPSBbXVxuICBwcml2YXRlIF9leHBsaWNpdFF1ZXJ5ID0gZmFsc2VcbiAgcHJpdmF0ZSBfbGFzdEZyb21DbGF1c2U6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgU1FMaXRlIGRhdGFzb3VyY2UgYnVpbGRlci5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdGlvbnMuZGF0YXNvdXJjZUlkIC0gVW5pcXVlIGlkZW50aWZpZXIuIEZvcm1hdDogTWl4ZWRjYXNlIDItNTAsIHByZWZlciBrZWJhYi1jYXNlLCBzdGFydHMgYWxwaGEsIGNvbnRhaW5zIGFscGhhbnVtIGFuZCBgLWAsIGVuZHMgYWxwaGFudW1cbiAgICogQHBhcmFtIG9wdGlvbnMucHJvdmlkZXIgLSAnZHluYW1pYycgKGNsb3VkLXN5bmMpIG9yICdsb2NhbCcgKGRldmljZS1vbmx5KVxuICAgKiBAcGFyYW0gb3B0aW9ucy5pbnN0YW5jZUlkIC0gT3B0aW9uYWwgaW5zdGFuY2UgSUQgKGRlZmF1bHRzIHRvIGRhdGFzb3VyY2VJZClcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNxbGl0ZURhdGFzb3VyY2VJbnB1dCkge1xuICAgIGNvbnN0IHsgZGF0YXNvdXJjZUlkLCBwcm92aWRlciwgaW5zdGFuY2VJZCB9ID0gb3B0aW9uc1xuICAgIHN1cGVyKERBVEFTT1VSQ0VfVFlQRS5TUUxJVEUsIHtcbiAgICAgIGRhdGFzb3VyY2VJZDogdG9EYXRhc291cmNlSWQoZGF0YXNvdXJjZUlkKSxcbiAgICAgIGluc3RhbmNlSWQsXG4gICAgfSlcblxuICAgIHRoaXMuX2NvbmZpZy5wcm92aWRlciA9IHByb3ZpZGVyID09PSAnbG9jYWwnID8gREFUQV9QUk9WSURFUi5MT0NBTCA6IERBVEFfUFJPVklERVIuRFlOQU1JQ1xuICAgIHRoaXMuX2NvbmZpZy5xdWVyeSA9ICcnXG4gICAgdGhpcy5fY29uZmlnLmVudGl0aWVzID0gW11cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhbmQgbm9ybWFsaXplIHBhcmFtZXRlciBuYW1lcy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVQYXJhbWV0ZXJOYW1lKG5hbWU6IHN0cmluZyB8IFBhcmFtZXRlck5hbWUpOiBzdHJpbmcgfCBQYXJhbWV0ZXJOYW1lIHtcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBSZW1vdmUgQCBwcmVmaXggaWYgcHJlc2VudCAoY29tbW9uIG1pc3Rha2UpXG4gICAgICBpZiAobmFtZS5zdGFydHNXaXRoKCdAJykpIHtcbiAgICAgICAgbmFtZSA9IG5hbWUuc2xpY2UoMSlcbiAgICAgIH1cbiAgICAgIC8vIEZpcnN0IHRyeSB0byB2YWxpZGF0ZSBhcy1pcyAoUGFyYW1ldGVyTmFtZVNjaGVtYSBhbGxvd3MgYm90aCAkIGFuZCBhbHBoYSBzdGFydClcbiAgICAgIGNvbnN0IHJlc3VsdCA9IFBhcmFtZXRlck5hbWVTY2hlbWEuc2FmZVBhcnNlKG5hbWUpXG4gICAgICBpZiAocmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5kYXRhXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZiB2YWxpZGF0aW9uIGZhaWxzLCB1c2UgdG9QYXJhbWV0ZXJEb2xsYXIgd2hpY2ggd2lsbCBnaXZlIHByb3BlciBlcnJvciBtZXNzYWdlXG4gICAgICAgIHJldHVybiB0b1BhcmFtZXRlck5hbWUobmFtZSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0UXVlcnkoZnJvbUNsYXVzZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2V4cGxpY2l0UXVlcnkpIHJldHVyblxuICAgIHRoaXMuX2xhc3RGcm9tQ2xhdXNlID0gZnJvbUNsYXVzZVxuICAgIGlmICh0aGlzLl9jb25maWcuaXNEb2N1bWVudCkge1xuICAgICAgdGhpcy5fY29uZmlnLnF1ZXJ5ID0gYFNFTEVDVCB0YmwuaWQsIHRibC5kYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSAke2Zyb21DbGF1c2V9IEFTIHRibGBcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY29uZmlnLnF1ZXJ5ID0gYFNFTEVDVCB0YmwuaWQsIGpzb25fZXh0cmFjdCh0YmwuZGF0YSwgJyQubmFtZScpIEFTIG5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NICR7ZnJvbUNsYXVzZX0gQVMgdGJsYFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUYWJsZSBuYW1lcyB0aGF0IG5lZWQgcmVnaXN0cmF0aW9uIG9uIHRoZSBkZWZhdWx0IGRhdGFiYXNlLlxuICAgKiBDb2xsZWN0ZWQgZHVyaW5nIGVudGl0eSgpIGNhbGxzIGZvciBkeW5hbWljLXByb3ZpZGVyIGRhdGFzb3VyY2VzLlxuICAgKlxuICAgKiBOb3RlOiBUYWJsZXMgYXJlIG9ubHkgYXV0by1yZWdpc3RlcmVkIHdoZW4gdGhpcyBkYXRhc291cmNlIGlzIGJ1aWx0XG4gICAqIHRocm91Z2ggQXBwbGljYXRpb25CdWlsZGVyLiBTdGFuZGFsb25lIHVzYWdlIHJlcXVpcmVzIG1hbnVhbCB0YWJsZVxuICAgKiByZWdpc3RyYXRpb24gb24gdGhlIERhdGFiYXNlQnVpbGRlci5cbiAgICovXG4gIGdldFJlcXVpcmVkVGFibGVzKCk6IHJlYWRvbmx5IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWRUYWJsZXNcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJEeW5hbWljVGFibGUoZW50aXR5TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2NvbmZpZy5wcm92aWRlciAhPT0gREFUQV9QUk9WSURFUi5EWU5BTUlDKSByZXR1cm5cbiAgICB0aGlzLl9yZXF1aXJlZFRhYmxlcy5wdXNoKHRvRGF0YWJhc2VUYWJsZU5hbWUoZW50aXR5TmFtZSkpXG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVGdW5jdGlvbklkKGZuOiBGdW5jdGlvbklkIHwgRnVuY3Rpb25Db3JlKTogRnVuY3Rpb25JZCB7XG4gICAgaWYgKGlzRnVuY3Rpb25Db3JlKGZuKSkgcmV0dXJuIGZuLmZ1bmN0aW9uSWRcbiAgICBpZiAoaXNGdW5jdGlvbklkKGZuKSkgcmV0dXJuIGZuXG4gICAgcmV0dXJuIHRvRnVuY3Rpb25JZChmbilcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgU1FMIHF1ZXJ5LiBVc2UganNvbl9leHRyYWN0KCkgZm9yIEpTT04gZGF0YS5cbiAgICogU3R5bGU6IFVQUEVSIGtleXdvcmRzLCBbdGFibGVdIEFTIGFsaWFzLCAkcGFyYW1zLlxuICAgKiBJbmNsdWRlIGlkIGZpcnN0LiBBZGQgdGFibGVzIHZpYSBlbnRpdHkoKS5cbiAgICogVXNlIE1DUCB0byBhY2Nlc3MgU1FMaXRlIGNoZWF0c2hlZXQuXG4gICAqXG4gICAqIEBwYXJhbSBzcWwgLSBTUUwgcXVlcnkgd2l0aCBqc29uX2V4dHJhY3QoKSBhbmQgJHBhcmFtZXRlcnNcbiAgICogQHJldHVybnMgQnVpbGRlciBmb3IgY2hhaW5pbmdcbiAgICovXG4gIHF1ZXJ5KHNxbDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFzcWwgfHwgc3FsLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUXVlcnkgY2Fubm90IGJlIGVtcHR5IG9yIHdoaXRlc3BhY2UnKVxuICAgIH1cbiAgICB0aGlzLl9jb25maWcucXVlcnkgPSBzcWxcbiAgICB0aGlzLl9leHBsaWNpdFF1ZXJ5ID0gdHJ1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogQWRkIGVudGl0eSAodGFibGUpIHRvIHN5bmMvcXVlcnkuXG4gICAqIC0gU3RyaW5nIGZvcm06IGBlbnRpdHkoJ2RlZmF1bHQvdXNlcnMnKWAg4oaSIGAnZGVmYXVsdC91c2VycydgXG4gICAqIC0gT2JqZWN0IGZvcm06IGBlbnRpdHkoeyBlbnRpdHk6ICd1c2VycycgfSlgIOKGkiBgeyBlbnRpdHk6ICd1c2VycycgfWBcbiAgICogLSBGdW5jdGlvbiBmb3JtOiBgZW50aXR5KHsgZW50aXR5OiAndXNlcnMnLCBmbiwgcGFyYW1zPyB9KWAg4oaSIGB7IGVudGl0eTogJ3VzZXJzJywgZnVuY3Rpb246ICcuLi4nLCAuLi4gfWBcbiAgICpcbiAgICogQHBhcmFtIGlucHV0IC0gRW50aXR5IG5hbWUgb3IgZGVzY3JpcHRvclxuICAgKiBAcmV0dXJucyBCdWlsZGVyIGZvciBjaGFpbmluZ1xuICAgKi9cbiAgZW50aXR5KFxuICAgIGlucHV0OlxuICAgICAgfCBzdHJpbmdcbiAgICAgIHwgVGFibGVOYW1lXG4gICAgICB8IHtcbiAgICAgICAgICBlbnRpdHk6IHN0cmluZyB8IFRhYmxlTmFtZVxuICAgICAgICAgIGZuPzogRnVuY3Rpb25JZCB8IEZ1bmN0aW9uQ29yZVxuICAgICAgICAgIHBhcmFtcz86IFNxbGl0ZVBhcmFtRXhwcmVzc2lvbnNcbiAgICAgICAgfSxcbiAgKTogdGhpcyB7XG4gICAgY29uc3QgZW50aXRpZXMgPSB0aGlzLl9jb25maWcuZW50aXRpZXMgYXMgQXJyYXk8U3FsaXRlRGF0YXNvdXJjZUVudGl0eSB8IHN0cmluZz5cblxuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IHRvRW50aXR5TmFtZShpbnB1dCwgdGhpcy5fY29uZmlnLnByb3ZpZGVyID09PSBEQVRBX1BST1ZJREVSLkRZTkFNSUMpXG4gICAgICB0aGlzLnJlZ2lzdGVyRHluYW1pY1RhYmxlKHJlc29sdmVkKVxuICAgICAgZW50aXRpZXMucHVzaChyZXNvbHZlZClcbiAgICAgIHRoaXMuYXBwbHlEZWZhdWx0UXVlcnkoYFske3Jlc29sdmVkfV1gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IHRvRW50aXR5TmFtZShpbnB1dC5lbnRpdHksIHRoaXMuX2NvbmZpZy5wcm92aWRlciA9PT0gREFUQV9QUk9WSURFUi5EWU5BTUlDKVxuICAgICAgdGhpcy5yZWdpc3RlckR5bmFtaWNUYWJsZShyZXNvbHZlZClcbiAgICAgIGlmIChpbnB1dC5mbikge1xuICAgICAgICBlbnRpdGllcy5wdXNoKHtcbiAgICAgICAgICBlbnRpdHk6IHJlc29sdmVkLFxuICAgICAgICAgIGZ1bmN0aW9uOiB0aGlzLnJlc29sdmVGdW5jdGlvbklkKGlucHV0LmZuKSxcbiAgICAgICAgICBmdW5jdGlvblBhcmFtZXRlcnM6IGlucHV0LnBhcmFtcyxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudGl0aWVzLnB1c2goeyBlbnRpdHk6IHJlc29sdmVkIH0pXG4gICAgICB9XG4gICAgICB0aGlzLmFwcGx5RGVmYXVsdFF1ZXJ5KGBbJHtyZXNvbHZlZH1dYClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgZW50aXR5IGZyb20gYW4gZXh0ZXJuYWwgcGFja2FnZS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBFbnRpdHkvdGFibGUgbmFtZVxuICAgKiBAcGFyYW0gcGFja2FnZU5hbWUgLSBQYWNrYWdlIG5hbWVcbiAgICogQHJldHVybnMgQnVpbGRlciBmb3IgY2hhaW5pbmdcbiAgICogQGV4YW1wbGUgZW50aXR5UGFja2FnZWQoJ0N1c3RvbWVycycsICdlcnAnKVxuICAgKi9cbiAgZW50aXR5UGFja2FnZWQobmFtZTogc3RyaW5nIHwgVGFibGVOYW1lLCBwYWNrYWdlTmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgZW50aXRpZXMgPSB0aGlzLl9jb25maWcuZW50aXRpZXMgYXMgQXJyYXk8U3FsaXRlRGF0YXNvdXJjZUVudGl0eSB8IHN0cmluZz5cbiAgICBlbnRpdGllcy5wdXNoKHsgZW50aXR5OiBuYW1lLCBwYWNrYWdlOiBwYWNrYWdlTmFtZSB9KVxuICAgIHRoaXMuYXBwbHlEZWZhdWx0UXVlcnkoYFske3BhY2thZ2VOYW1lfV0uWyR7bmFtZX1dYClcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZSBwYXJhbWV0ZXIgYW5kIHNldCB2YWx1ZSBpbiBvbmUgY2FsbC5cbiAgICogQ29tYmluZXMgcGFyYW1ldGVyKCkgYW5kIHF1ZXJ5UGFyYW1ldGVyKCkuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIC0gUGFyYW1ldGVyIG5hbWUgKG5vICQgcHJlZml4KVxuICAgKiBAcGFyYW0gdHlwZSAtIFR5cGUgKHN0cmluZywgbnVtYmVyLCBib29sZWFuKVxuICAgKiBAcGFyYW0gdmFsdWUgLSBSdW50aW1lIHZhbHVlIG9yIGV4cHJlc3Npb25cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBSZXF1aXJlZC9kZWZhdWx0IHNldHRpbmdzXG4gICAqIEByZXR1cm5zIEJ1aWxkZXIgZm9yIGNoYWluaW5nXG4gICAqL1xuICBwYXJhbShcbiAgICBuYW1lOiBzdHJpbmcgfCBQYXJhbWV0ZXJOYW1lLFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICB2YWx1ZTogUHJpbWl0aXZlIHwgRXhwcmVzc2lvbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgcmVxdWlyZWQ/OiBib29sZWFuXG4gICAgICBkZWZhdWx0VmFsdWU/OiBQcmltaXRpdmUgfCBFeHByZXNzaW9uXG4gICAgfSxcbiAgKTogdGhpcyB7XG4gICAgdGhpcy5wYXJhbWV0ZXIobmFtZSwgdHlwZSwge1xuICAgICAgcmVxdWlyZWQ6IG9wdGlvbnM/LnJlcXVpcmVkLFxuICAgICAgZGVmYXVsdFZhbHVlOiBvcHRpb25zPy5kZWZhdWx0VmFsdWUsXG4gICAgfSlcbiAgICB0aGlzLnF1ZXJ5UGFyYW1ldGVyKG5hbWUsIHZhbHVlKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgcnVudGltZSB2YWx1ZSBmb3IgU1FMIHBhcmFtZXRlci4gUmVmZXJlbmNlIGFzICRuYW1lIGluIHF1ZXJ5LlxuICAgKiBTdXBwb3J0cyBzdGF0aWMgdmFsdWVzIGFuZCBleHByZXNzaW9ucy5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBQYXJhbWV0ZXIgbmFtZSAod2l0aG91dCAkIHByZWZpeClcbiAgICogQHBhcmFtIHZhbHVlIC0gVmFsdWUgb3IgZXhwcmVzc2lvbiAoPUBjdHguKiwgPUBjdHguamlnLmlucHV0cy4qKVxuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgZm9yIGNoYWluaW5nXG4gICAqL1xuICBxdWVyeVBhcmFtZXRlcihcbiAgICBuYW1lOiBzdHJpbmcgfCBQYXJhbWV0ZXJOYW1lLFxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCB8IFByaW1pdGl2ZU9yRXhwcmVzc2lvbixcbiAgKTogdGhpcyB7XG4gICAgY29uc3QgdmFsaWRhdGVkTmFtZSA9IHRoaXMudmFsaWRhdGVQYXJhbWV0ZXJOYW1lKG5hbWUpXG5cbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5xdWVyeVBhcmFtZXRlcnMpIHtcbiAgICAgIHRoaXMuX2NvbmZpZy5xdWVyeVBhcmFtZXRlcnMgPSB7fVxuICAgIH1cbiAgICA7KHRoaXMuX2NvbmZpZy5xdWVyeVBhcmFtZXRlcnMgYXMgU3FsaXRlUGFyYW1FeHByZXNzaW9ucylbdmFsaWRhdGVkTmFtZV0gPSB2YWx1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lIGZvcm1hbCBwYXJhbWV0ZXIgKGxpa2UgZnVuY3Rpb24gc2lnbmF0dXJlKS5cbiAgICogVXNlIHF1ZXJ5UGFyYW1ldGVyKCkgdG8gc2V0IHJ1bnRpbWUgdmFsdWVzLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFBhcmFtZXRlciBuYW1lXG4gICAqIEBwYXJhbSB0eXBlIC0gVHlwZSAoc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4pXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gUmVxdWlyZWQvZGVmYXVsdCBzZXR0aW5nc1xuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgZm9yIGNoYWluaW5nXG4gICAqL1xuICBwYXJhbWV0ZXIoXG4gICAgbmFtZTogc3RyaW5nIHwgUGFyYW1ldGVyTmFtZSxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHsgcmVxdWlyZWQ/OiBib29sZWFuOyBkZWZhdWx0VmFsdWU/OiBQYXJhbWV0ZXJWYWx1ZSB9LFxuICApOiB0aGlzIHtcbiAgICBjb25zdCB2YWxpZGF0ZWROYW1lID0gdGhpcy52YWxpZGF0ZVBhcmFtZXRlck5hbWUobmFtZSlcblxuICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmFtZXRlcnMpIHtcbiAgICAgIHRoaXMuX2NvbmZpZy5wYXJhbWV0ZXJzID0ge31cbiAgICB9XG5cbiAgICA7KHRoaXMuX2NvbmZpZy5wYXJhbWV0ZXJzIGFzIE5vbk51bGxhYmxlPFNxbGl0ZURhdGFzb3VyY2VbJ3BhcmFtZXRlcnMnXT4pW3ZhbGlkYXRlZE5hbWVdID0ge1xuICAgICAgdHlwZSxcbiAgICAgIHJlcXVpcmVkOiBvcHRpb25zPy5yZXF1aXJlZCxcbiAgICAgIGRlZmF1bHQ6IG9wdGlvbnM/LmRlZmF1bHRWYWx1ZSxcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBvciBkaXNhYmxlIHF1ZXJ5IHJld3JpdGluZyBmb3Igc2hvcnRoYW5kIHN5bnRheC5cbiAgICogV2hlbiB0cnVlLCAkLnByb3BlcnR5TmFtZSBpcyByZXdyaXR0ZW4gdG8ganNvbl9leHRyYWN0KGRhdGEsICckLnByb3BlcnR5TmFtZScpLlxuICAgKiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSB0cnVlIHRvIGVuYWJsZSByZXdyaXRpbmdcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGZvciBjaGFpbmluZ1xuICAgKi9cbiAgcmV3cml0ZVF1ZXJ5KHZhbHVlID0gdHJ1ZSk6IHRoaXMge1xuICAgIHRoaXMuX2NvbmZpZy5yZXdyaXRlUXVlcnkgPSB2YWx1ZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHNpbmdsZSBkb2N1bWVudCBpbnN0ZWFkIG9mIGFycmF5LiBRdWVyeSBzaG91bGQgcmV0dXJuIGZ1bGwgZGF0YSBjb2x1bW4uXG4gICAqIFVzZSBmb3IgZGV0YWlsIHZpZXdzLCBzaW5nbGUgcmVjb3JkIGxvb2t1cHMuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIHRydWUgZm9yIGRvY3VtZW50IG1vZGUgKGRlZmF1bHQ6IHRydWUpXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBmb3IgY2hhaW5pbmdcbiAgICovXG4gIGlzRG9jdW1lbnQodmFsdWUgPSB0cnVlKTogdGhpcyB7XG4gICAgdGhpcy5fY29uZmlnLmlzRG9jdW1lbnQgPSB2YWx1ZVxuICAgIGlmICh0aGlzLl9sYXN0RnJvbUNsYXVzZSkge1xuICAgICAgdGhpcy5hcHBseURlZmF1bHRRdWVyeSh0aGlzLl9sYXN0RnJvbUNsYXVzZSlcbiAgICB9XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBjb2x1bW5zIGFzIEpTT04gaW4gcXVlcnkgcmVzdWx0cy5cbiAgICogVXNlIHdoZW4gc3RvcmluZyBKU09OIHN0cmluZ3MgdGhhdCBuZWVkIHBhcnNpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBjb2x1bW5zIC0gQ29sdW1uIG5hbWVzIHRvIHBhcnNlXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBmb3IgY2hhaW5pbmdcbiAgICovXG4gIGpzb25Qcm9wZXJ0aWVzKC4uLmNvbHVtbnM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuanNvblByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuX2NvbmZpZy5qc29uUHJvcGVydGllcyA9IFtdXG4gICAgfVxuICAgIDsodGhpcy5fY29uZmlnLmpzb25Qcm9wZXJ0aWVzIGFzIHN0cmluZ1tdKS5wdXNoKC4uLmNvbHVtbnMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXI6IEJ1aWxkIFNFTEVDVCBxdWVyeSB3aXRoIGpzb25fZXh0cmFjdCBjb2x1bW5zLlxuICAgKiBBdXRvbWF0aWNhbGx5IGFkZCBlbnRpdHkgYW5kIGZvcm1hdCBxdWVyeS5cbiAgICpcbiAgICogQHBhcmFtIGNvbHVtbnMgLSBDb2x1bW5zIHRvIGV4dHJhY3QgZnJvbSBkYXRhIEpTT05cbiAgICogQHBhcmFtIGZyb20gLSBUYWJsZSBuYW1lXG4gICAqIEBwYXJhbSB3aGVyZSAtIFdIRVJFIGNsYXVzZSAoY2FuIHVzZSAkcGFyYW1zKVxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRhYmxlIGFsaWFzIG9wdGlvblxuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgZm9yIGNoYWluaW5nXG4gICAqL1xuICBzZWxlY3QoXG4gICAgY29sdW1uczogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgZnJvbTogc3RyaW5nIHwgVGFibGVOYW1lIHwgRW50aXR5TmFtZSxcbiAgICB3aGVyZT86IHN0cmluZyxcbiAgICBvcHRpb25zPzogeyB0YWJsZUFsaWFzPzogc3RyaW5nIH0sXG4gICk6IHRoaXMge1xuICAgIHRoaXMuaXNEb2N1bWVudChmYWxzZSlcblxuICAgIGZyb20gPSB0b0VudGl0eU5hbWUoZnJvbSwgdGhpcy5fY29uZmlnLnByb3ZpZGVyID09PSBEQVRBX1BST1ZJREVSLkRZTkFNSUMpXG4gICAgdGhpcy5lbnRpdHkoZnJvbSlcblxuICAgIGNvbnN0IHRhYmxlQWxpYXMgPSBvcHRpb25zPy50YWJsZUFsaWFzIHx8ICd0YmwnXG4gICAgY29uc3QgY29scyA9IEFycmF5LmlzQXJyYXkoY29sdW1ucykgPyBjb2x1bW5zIDogY29sdW1ucy5zcGxpdCgnLCcpLm1hcCgoYykgPT4gYy50cmltKCkpXG4gICAgLy8gQWx3YXlzIGVuc3VyZSBpZCBpcyBmaXJzdCwgYW5kIG5vdCBkdXBsaWNhdGVkIGluIGpzb25fZXh0cmFjdFxuICAgIGNvbnN0IHNlbGVjdENvbHMgPSBbYCR7dGFibGVBbGlhc30uaWRgXVxuICAgIGZvciAoY29uc3QgY29sIG9mIGNvbHMpIHtcbiAgICAgIGlmIChjb2wgIT09ICdpZCcpIHtcbiAgICAgICAgc2VsZWN0Q29scy5wdXNoKGBqc29uX2V4dHJhY3QoJHt0YWJsZUFsaWFzfS5kYXRhLCAnJC4ke2NvbH0nKSBBUyAke2NvbH1gKVxuICAgICAgfVxuICAgIH1cbiAgICBsZXQgcXVlcnkgPSBgU0VMRUNUICR7c2VsZWN0Q29scy5qb2luKCcsICcpfVxuICAgICAgICAgICAgICAgICBGUk9NIFske2Zyb219XSBBUyAke3RhYmxlQWxpYXN9YFxuICAgIGlmICh3aGVyZSkgcXVlcnkgKz0gYCBXSEVSRSAke3doZXJlfWBcbiAgICB0aGlzLnF1ZXJ5KHF1ZXJ5KVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSGVscGVyOiBCdWlsZCBkb2N1bWVudCBxdWVyeSAocmV0dXJucyBmdWxsIGRhdGEgb2JqZWN0KS5cbiAgICogU2V0IGlzRG9jdW1lbnQodHJ1ZSkgYW5kIGNyZWF0ZSBhcHByb3ByaWF0ZSBxdWVyeS5cbiAgICpcbiAgICogQHBhcmFtIGZyb20gLSBUYWJsZSBuYW1lXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gV0hFUkUgY2xhdXNlIGFuZCBhbGlhcyBvcHRpb25zXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBmb3IgY2hhaW5pbmdcbiAgICovXG4gIHNlbGVjdERvY3VtZW50KFxuICAgIGZyb206IHN0cmluZyB8IFRhYmxlTmFtZSB8IEVudGl0eU5hbWUsXG4gICAgb3B0aW9ucz86IHsgd2hlcmU/OiBzdHJpbmc7IHRhYmxlQWxpYXM/OiBzdHJpbmcgfSxcbiAgKTogdGhpcyB7XG4gICAgdGhpcy5pc0RvY3VtZW50KHRydWUpXG5cbiAgICBmcm9tID0gdG9FbnRpdHlOYW1lKGZyb20sIHRoaXMuX2NvbmZpZy5wcm92aWRlciA9PT0gREFUQV9QUk9WSURFUi5EWU5BTUlDKVxuICAgIHRoaXMuZW50aXR5KGZyb20pXG5cbiAgICBjb25zdCB0YWJsZUFsaWFzID0gb3B0aW9ucz8udGFibGVBbGlhcyB8fCAndGJsJ1xuICAgIGxldCBxdWVyeSA9IGBTRUxFQ1QgJHt0YWJsZUFsaWFzfS5pZCwgJHt0YWJsZUFsaWFzfS5kYXRhXG4gICAgICAgICAgICAgICAgIEZST00gWyR7ZnJvbX1dIEFTICR7dGFibGVBbGlhc31gXG4gICAgaWYgKG9wdGlvbnM/LndoZXJlKSBxdWVyeSArPSBgIFdIRVJFICR7b3B0aW9ucy53aGVyZX1gXG4gICAgdGhpcy5xdWVyeShxdWVyeSlcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKipcbiAgICogSGVscGVyOiBBZGQganNvbl9leHRyYWN0IGNvbHVtbiB0byBleGlzdGluZyBxdWVyeS5cbiAgICogTW9kaWZ5IGN1cnJlbnQgU0VMRUNUIGNsYXVzZS5cbiAgICpcbiAgICogQHBhcmFtIGNvbHVtbiAtIENvbHVtbiBuYW1lIHRvIGV4dHJhY3RcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBQYXRoLCBhbGlhcywgYW5kIHRhYmxlIG9wdGlvbnNcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGZvciBjaGFpbmluZ1xuICAgKi9cbiAganNvbkV4dHJhY3QoXG4gICAgY29sdW1uOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHsgcGF0aD86IHN0cmluZzsgYWxpYXM/OiBzdHJpbmc7IHRhYmxlQWxpYXM/OiBzdHJpbmcgfSxcbiAgKTogdGhpcyB7XG4gICAgY29uc3QgdGFibGVBbGlhczogc3RyaW5nID0gb3B0aW9ucz8udGFibGVBbGlhcyB8fCAndGJsJ1xuICAgIGNvbnN0IGNvbHVtbkFsaWFzOiBzdHJpbmcgPSBvcHRpb25zPy5hbGlhcyB8fCBjb2x1bW5cblxuICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZXh0cmFjdCB0aGUgaWQgY29sdW1uLCBpdCBpcyBhbHJlYWR5IGRpcmVjdGx5IGluIHF1ZXJ5XG4gICAgaWYgKGNvbHVtbiA9PT0gJ2lkJykgcmV0dXJuIHRoaXNcblxuICAgIGxldCBwYXRoOiBzdHJpbmcgPSBvcHRpb25zPy5wYXRoIHx8IGNvbHVtblxuICAgIGlmICghcGF0aC5zdGFydHNXaXRoKCckJykpIHBhdGggPSBgJC4ke3BhdGh9YFxuXG4gICAgY29uc3QgY3VycmVudFF1ZXJ5ID0gdGhpcy5fY29uZmlnLnF1ZXJ5IGFzIHN0cmluZ1xuICAgIGlmIChjdXJyZW50UXVlcnkuaW5jbHVkZXMoJ1NFTEVDVCcpKSB7XG4gICAgICAvLyBSZXBsYWNlIG9yIGFwcGVuZCB0byBzZWxlY3QgY2xhdXNlXG4gICAgICBjb25zdCBuZXdDb2x1bW4gPSBganNvbl9leHRyYWN0KCR7dGFibGVBbGlhc30uZGF0YSwgJyR7cGF0aH0nKSBBUyAke2NvbHVtbkFsaWFzfWBcbiAgICAgIGNvbnN0IG1vZGlmaWVkUXVlcnkgPSBjdXJyZW50UXVlcnkucmVwbGFjZSgvU0VMRUNUXFxzKy8sIGBTRUxFQ1QgJHtuZXdDb2x1bW59LCBgKVxuICAgICAgdGhpcy5xdWVyeShtb2RpZmllZFF1ZXJ5KVxuICAgIH1cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBtdWx0aXBsZSBlbnRpdGllcyBhdCBvbmNlLlxuICAgKiBTaG9ydGhhbmQgZm9yIG11bHRpcGxlIGVudGl0eSgpIGNhbGxzLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZXMgLSBFbnRpdHkvdGFibGUgbmFtZXNcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGZvciBjaGFpbmluZ1xuICAgKi9cbiAgZW50aXRpZXMoLi4ubmFtZXM6IEFycmF5PHN0cmluZyB8IFRhYmxlTmFtZSB8IEVudGl0eU5hbWU+KTogdGhpcyB7XG4gICAgbmFtZXMuZm9yRWFjaCgobmFtZSkgPT4gdGhpcy5lbnRpdHkobmFtZSkpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGRhdGEgYmV0d2VlbiBmb3JtYXRzIChpbWFnZXMsIGZpbGVzKS5cbiAgICogQ29tbW9uOiBCQVNFNjQg4oaSIExPQ0FMX1VSSSBmb3IgZGlzcGxheWluZyBpbWFnZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0eSAtIFByb3BlcnR5IHBhdGggdG8gY29udmVydFxuICAgKiBAcGFyYW0gZnJvbSAtIFNvdXJjZSBmb3JtYXRcbiAgICogQHBhcmFtIHRvIC0gVGFyZ2V0IGZvcm1hdFxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGxvY2FsRmlsZW5hbWUgZm9yIGxvY2FsLXVyaSB0YXJnZXQsIGNvbnZlcnRIZWljVG9KcGcgZmxhZ1xuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgZm9yIGNoYWluaW5nXG4gICAqL1xuICBjb252ZXJ0KFxuICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgZnJvbTogJ2J1ZmZlcicgfCAnbG9jYWwtdXJpJyB8ICdiYXNlNjQnIHwgJ2RhdGEtdXJpJyxcbiAgICB0bzogJ2J1ZmZlcicgfCAnYmFzZTY0JyB8ICdkYXRhLXVyaScsXG4gICAgb3B0aW9ucz86IHsgY29udmVydEhlaWNUb0pwZz86IGJvb2xlYW4gfSxcbiAgKTogdGhpc1xuXG4gIGNvbnZlcnQoXG4gICAgcHJvcGVydHk6IHN0cmluZyxcbiAgICBmcm9tOiAnYnVmZmVyJyB8ICdsb2NhbC11cmknIHwgJ2Jhc2U2NCcgfCAnZGF0YS11cmknLFxuICAgIHRvOiAnbG9jYWwtdXJpJyxcbiAgICBvcHRpb25zPzogeyBsb2NhbEZpbGVuYW1lPzogc3RyaW5nOyBjb252ZXJ0SGVpY1RvSnBnPzogYm9vbGVhbiB9LFxuICApOiB0aGlzXG5cbiAgY29udmVydChcbiAgICBwcm9wZXJ0eTogc3RyaW5nLFxuICAgIGZyb206ICdidWZmZXInIHwgJ2xvY2FsLXVyaScgfCAnYmFzZTY0JyB8ICdkYXRhLXVyaScsXG4gICAgdG86ICdidWZmZXInIHwgJ2Jhc2U2NCcgfCAnZGF0YS11cmknIHwgJ2xvY2FsLXVyaScsXG4gICAgb3B0aW9ucz86IHsgbG9jYWxGaWxlbmFtZT86IHN0cmluZzsgY29udmVydEhlaWNUb0pwZz86IGJvb2xlYW4gfSxcbiAgKTogdGhpcyB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuY29udmVyc2lvbnMpIHtcbiAgICAgIHRoaXMuX2NvbmZpZy5jb252ZXJzaW9ucyA9IFtdXG4gICAgfVxuXG4gICAgbGV0IGNvbnZlcnNpb246IENvbnZlcnNpb25EZWZpbml0aW9uXG4gICAgaWYgKHRvID09PSAnbG9jYWwtdXJpJykge1xuICAgICAgY29udmVyc2lvbiA9IG9wdGlvbnM/LmxvY2FsRmlsZW5hbWVcbiAgICAgICAgPyB7IHByb3BlcnR5LCBmcm9tLCB0bywgbG9jYWxGaWxlbmFtZTogb3B0aW9ucy5sb2NhbEZpbGVuYW1lIH1cbiAgICAgICAgOiB7IHByb3BlcnR5LCBmcm9tLCB0byB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnZlcnNpb24gPSB7IHByb3BlcnR5LCBmcm9tLCB0byB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zPy5jb252ZXJ0SGVpY1RvSnBnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnZlcnNpb24uY29udmVydEhlaWNUb0pwZyA9IG9wdGlvbnMuY29udmVydEhlaWNUb0pwZ1xuICAgIH1cblxuICAgIDsodGhpcy5fY29uZmlnLmNvbnZlcnNpb25zIGFzIENvbnZlcnNpb25EZWZpbml0aW9uW10pLnB1c2goY29udmVyc2lvbilcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gU1FMaXRlIGRhdGFzb3VyY2UgZGVmaW5pdGlvbi5cbiAgICogQHJldHVybnMgQ29tcGxldGUgU1FMaXRlIGRhdGFzb3VyY2UgY29uZmlndXJhdGlvblxuICAgKi9cbiAgb3ZlcnJpZGUgYnVpbGQoKTogU3FsaXRlRGF0YXNvdXJjZSB7XG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLl9jb25maWcucXVlcnkgYXMgc3RyaW5nXG4gICAgY29uc3QgZW50aXRpZXMgPSB0aGlzLl9jb25maWcuZW50aXRpZXMgYXMgQXJyYXk8U3FsaXRlRGF0YXNvdXJjZUVudGl0eSB8IHN0cmluZz5cbiAgICBjb25zdCBwcm92aWRlciA9IHRoaXMuX2NvbmZpZy5wcm92aWRlciBhcyBTcWxpdGVQcm92aWRlclR5cGVcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgd2UgaGF2ZSBhIG5vbi1lbXB0eSBxdWVyeVxuICAgIGlmICghcXVlcnkgfHwgcXVlcnkudHJpbSgpID09PSAnJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdRdWVyeSBjYW5ub3QgYmUgZW1wdHkgb3Igd2hpdGVzcGFjZScpXG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCB0YWJsZSBuYW1lcyBmcm9tIGVudGl0aWVzIChpbmNsdWRpbmcgcGFja2FnZSBwcmVmaXggZm9yIGV4dGVybmFsIHBhY2thZ2VzKVxuICAgIGNvbnN0IHRhYmxlTmFtZXMgPSBlbnRpdGllcy5tYXAoKGVudGl0eSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdzdHJpbmcnKSByZXR1cm4gZW50aXR5XG4gICAgICAvLyBGb3IgcGFja2FnZSBlbnRpdGllcywgdXNlIHRoZSBmdWxsIFtwYWNrYWdlXS5bdGFibGVdIGZvcm1hdCB0aGF0IGFwcGVhcnMgaW4gcXVlcmllc1xuICAgICAgaWYgKGVudGl0eS5wYWNrYWdlKSB7XG4gICAgICAgIHJldHVybiBgWyR7ZW50aXR5LnBhY2thZ2V9XS5bJHtlbnRpdHkuZW50aXR5fV1gXG4gICAgICB9XG4gICAgICByZXR1cm4gZW50aXR5LmVudGl0eVxuICAgIH0pXG5cbiAgICAvLyBDcmVhdGUgaW4tbWVtb3J5IGRhdGFiYXNlIHdpdGggYWxsIHRhYmxlcyBmb3IgdmFsaWRhdGlvblxuICAgIGNvbnN0IHsgZGIsIHRhYmxlcyB9ID0gY3JlYXRlVmFsaWRhdGlvbkRhdGFiYXNlKHRhYmxlTmFtZXMpXG5cbiAgICAvLyBXb3JraW5nIGNvcHkgZm9yIHZhbGlkYXRpb25cbiAgICBsZXQgdmFsaWRhdGlvblF1ZXJ5ID0gcXVlcnlcblxuICAgIHRyeSB7XG4gICAgICAvLyBBcHBseSBhbGwgdGFibGUgbmFtZSB0cmFuc2Zvcm1hdGlvbnMgdG8gcXVlcnlcbiAgICAgIHRhYmxlcy5mb3JFYWNoKCh7IHNhZmVOYW1lLCBub3JtYWxpemVkTmFtZSB9KSA9PiB7XG4gICAgICAgIGlmIChzYWZlTmFtZSAhPT0gbm9ybWFsaXplZE5hbWUpIHtcbiAgICAgICAgICB2YWxpZGF0aW9uUXVlcnkgPSByZXBsYWNlVGFibGVOYW1lKHZhbGlkYXRpb25RdWVyeSwgbm9ybWFsaXplZE5hbWUsIHNhZmVOYW1lKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICAvLyBSZXBsYWNlIG5hbWVkIHBhcmFtZXRlcnMgd2l0aCBwb3NpdGlvbmFsIHBsYWNlaG9sZGVycyBmb3IgdmFsaWRhdGlvblxuICAgICAgdmFsaWRhdGlvblF1ZXJ5ID0gcmVwbGFjZVBhcmFtZXRlcnModmFsaWRhdGlvblF1ZXJ5KVxuXG4gICAgICAvLyBWYWxpZGF0ZSBxdWVyeSBzeW50YXggYW5kIGVuc3VyZSBpdCdzIGEgU0VMRUNUXG4gICAgICB2YWxpZGF0ZVNlbGVjdFF1ZXJ5KGRiLCB2YWxpZGF0aW9uUXVlcnkpXG5cbiAgICAgIC8vIEFzc2VtYmxlIHRoZSBvdXRwdXRcbiAgICAgIGNvbnN0IG9wdGlvbnM6IFNxbGl0ZURhdGFzb3VyY2VPcHRpb25zID0ge1xuICAgICAgICBwcm92aWRlcixcbiAgICAgICAgZW50aXRpZXMsXG4gICAgICAgIHF1ZXJ5LFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fY29uZmlnLnF1ZXJ5UGFyYW1ldGVycykge1xuICAgICAgICBvcHRpb25zLnF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuX2NvbmZpZy5xdWVyeVBhcmFtZXRlcnMgYXMgU3FsaXRlUGFyYW1FeHByZXNzaW9uc1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5pc0RvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3B0aW9ucy5pc0RvY3VtZW50ID0gdGhpcy5fY29uZmlnLmlzRG9jdW1lbnQgYXMgYm9vbGVhblxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5yZXdyaXRlUXVlcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBvcHRpb25zLnJld3JpdGVRdWVyeSA9IHRoaXMuX2NvbmZpZy5yZXdyaXRlUXVlcnkgYXMgYm9vbGVhblxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5qc29uUHJvcGVydGllcykge1xuICAgICAgICBvcHRpb25zLmpzb25Qcm9wZXJ0aWVzID0gdGhpcy5fY29uZmlnLmpzb25Qcm9wZXJ0aWVzIGFzIHN0cmluZ1tdXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5fY29uZmlnLmNvbnZlcnNpb25zKSB7XG4gICAgICAgIG9wdGlvbnMuY29udmVyc2lvbnMgPSB0aGlzLl9jb25maWcuY29udmVyc2lvbnMgYXMgQ29udmVyc2lvbkRlZmluaXRpb25bXVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXN1bHQ6IFNxbGl0ZURhdGFzb3VyY2UgPSB7XG4gICAgICAgIHR5cGU6IERBVEFTT1VSQ0VfVFlQRS5TUUxJVEUsXG4gICAgICAgIGRhdGFzb3VyY2VJZDogdGhpcy5kYXRhc291cmNlSWQsXG4gICAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2VJZCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5wYXJhbWV0ZXJzKSB7XG4gICAgICAgIHJlc3VsdC5wYXJhbWV0ZXJzID0gdGhpcy5fY29uZmlnLnBhcmFtZXRlcnMgYXMgTm9uTnVsbGFibGU8U3FsaXRlRGF0YXNvdXJjZVsncGFyYW1ldGVycyddPlxuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIFByb3ZpZGUgaGVscGZ1bCBlcnJvciBtZXNzYWdlIHdpdGggb3JpZ2luYWwgcXVlcnkgKG5vdCB0cmFuc2Zvcm1lZCB2YWxpZGF0aW9uIHF1ZXJ5KVxuICAgICAgY29uc3QgZXJyb3JNc2cgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcilcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBTUUwgcXVlcnk6ICR7ZXJyb3JNc2d9XFxuXFxuUXVlcnk6ICR7cXVlcnl9YClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gQWx3YXlzIGNsb3NlIHRoZSBkYXRhYmFzZVxuICAgICAgZGIuY2xvc2UoKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DATASOURCE_TYPE, type DatasourceId, type Primitive } from '../abstract/index.js';
|
|
2
|
+
import { DatasourceBaseBuilder } from './datasource.abstract.js';
|
|
3
|
+
export type StaticDatasource = {
|
|
4
|
+
type: typeof DATASOURCE_TYPE.STATIC;
|
|
5
|
+
datasourceId: DatasourceId;
|
|
6
|
+
instanceId?: string;
|
|
7
|
+
options: {
|
|
8
|
+
data: unknown[];
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export type InlineData = Array<Primitive | Record<string, unknown>>;
|
|
12
|
+
export interface StaticDatasourceInput {
|
|
13
|
+
readonly datasourceId: string | DatasourceId;
|
|
14
|
+
readonly data?: InlineData;
|
|
15
|
+
}
|
|
16
|
+
export declare class StaticDatasourceBuilder extends DatasourceBaseBuilder<StaticDatasource> {
|
|
17
|
+
constructor(options: StaticDatasourceInput);
|
|
18
|
+
csv(csvString: string, delimiter?: string): this;
|
|
19
|
+
json(jsonString: string): this;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5zdGF0aWMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhc291cmNlL2RhdGFzb3VyY2Uuc3RhdGljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUN6RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUtoRSxNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsSUFBSSxFQUFFLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQTtJQUNuQyxZQUFZLEVBQUUsWUFBWSxDQUFBO0lBQzFCLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtJQUNuQixPQUFPLEVBQUU7UUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUE7S0FBRSxDQUFBO0NBQzdCLENBQUE7QUFFRCxNQUFNLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFBO0FBYW5FLE1BQU0sV0FBVyxxQkFBcUI7SUFDcEMsUUFBUSxDQUFDLFlBQVksRUFBRSxNQUFNLEdBQUcsWUFBWSxDQUFBO0lBQzVDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxVQUFVLENBQUE7Q0FDM0I7QUFFRCxxQkFBYSx1QkFBd0IsU0FBUSxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQztJQVFsRixZQUFZLE9BQU8sRUFBRSxxQkFBcUIsRUFPekM7SUFVRCxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLFNBQU0sR0FBRyxJQUFJLENBRzVDO0lBV0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEdBQUcsSUFBSSxDQVc3QjtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREFUQVNPVVJDRV9UWVBFLCB0eXBlIERhdGFzb3VyY2VJZCwgdHlwZSBQcmltaXRpdmUgfSBmcm9tICcuLi9hYnN0cmFjdC9pbmRleC5qcydcbmltcG9ydCB7IERhdGFzb3VyY2VCYXNlQnVpbGRlciB9IGZyb20gJy4vZGF0YXNvdXJjZS5hYnN0cmFjdC5qcydcblxuLyoqXG4gKiBTdGF0aWMgZGF0YXNvdXJjZSBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgdHlwZSBTdGF0aWNEYXRhc291cmNlID0ge1xuICB0eXBlOiB0eXBlb2YgREFUQVNPVVJDRV9UWVBFLlNUQVRJQ1xuICBkYXRhc291cmNlSWQ6IERhdGFzb3VyY2VJZFxuICBpbnN0YW5jZUlkPzogc3RyaW5nXG4gIG9wdGlvbnM6IHsgZGF0YTogdW5rbm93bltdIH1cbn1cblxuZXhwb3J0IHR5cGUgSW5saW5lRGF0YSA9IEFycmF5PFByaW1pdGl2ZSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+PlxuXG4vKipcbiAqIERlZmluZSBmaXhlZCBkYXRhIGRpcmVjdGx5IGluIGNvZGUuXG4gKiBVc2UgZm9yIGRyb3Bkb3duIG9wdGlvbnMsIGNvbmZpZywgbG9va3Vwcy5cbiAqIERhdGEgZW1iZWRkZWQgYXQgYnVpbGQgdGltZSwgbm8gc3luYyBuZWVkZWQuXG4gKiBBbHdheXMgYXZhaWxhYmxlIG9mZmxpbmUgd2l0aCB6ZXJvIGxhdGVuY3kuXG4gKiBBY2NlcHQgYXJyYXlzIG9mIG9iamVjdHMgb3IgcHJpbWl0aXZlcy5cbiAqIEdsb2JhbCBkYXRhc291cmNlcyBwcmV2ZW50IGR1cGxpY2F0aW9uLlxuICogVXBkYXRlIHJlcXVpcmVzIHJlcHVibGlzaGluZyBhcHBsaWNhdGlvbi5cbiAqIE5vdCBmb3IgZnJlcXVlbnRseSBjaGFuZ2luZyBkYXRhLlxuICogQGFsaWFzIGRhdGFzb3VyY2Uuc3RhdGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGljRGF0YXNvdXJjZUlucHV0IHtcbiAgcmVhZG9ubHkgZGF0YXNvdXJjZUlkOiBzdHJpbmcgfCBEYXRhc291cmNlSWRcbiAgcmVhZG9ubHkgZGF0YT86IElubGluZURhdGFcbn1cblxuZXhwb3J0IGNsYXNzIFN0YXRpY0RhdGFzb3VyY2VCdWlsZGVyIGV4dGVuZHMgRGF0YXNvdXJjZUJhc2VCdWlsZGVyPFN0YXRpY0RhdGFzb3VyY2U+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgc3RhdGljIGRhdGFzb3VyY2UgYnVpbGRlciB3aXRoIG9wdGlvbmFsIGVtYmVkZGVkIGRhdGEuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLmRhdGFzb3VyY2VJZCAtIFVuaXF1ZSBpZGVudGlmaWVyLiBGb3JtYXQ6IE1peGVkY2FzZSAyLTUwLCBwcmVmZXIga2ViYWItY2FzZSwgc3RhcnRzIGFscGhhLCBjb250YWlucyBhbHBoYW51bSBhbmQgYC1gLCBlbmRzIGFscGhhbnVtXG4gICAqIEBwYXJhbSBvcHRpb25zLmRhdGEgLSBPcHRpb25hbCBhcnJheSBvZiBwcmltaXRpdmUgdmFsdWVzIG9yIG9iamVjdHMgdG8gZW1iZWQgKGRlZmF1bHRzIHRvIGVtcHR5IGFycmF5KVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgZGF0YSBpcyBwcm92aWRlZCBidXQgbm90IGFuIGFycmF5XG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTdGF0aWNEYXRhc291cmNlSW5wdXQpIHtcbiAgICBjb25zdCB7IGRhdGFzb3VyY2VJZCwgZGF0YSA9IFtdIH0gPSBvcHRpb25zXG4gICAgc3VwZXIoREFUQVNPVVJDRV9UWVBFLlNUQVRJQywgeyBkYXRhc291cmNlSWQgfSlcbiAgICBpZiAodHlwZW9mIGRhdGEgIT09ICd1bmRlZmluZWQnICYmICFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgbXVzdCBiZSBhbiBhcnJheScpXG4gICAgfVxuICAgIHRoaXMuX2NvbmZpZy5kYXRhID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBkYXRhIGZyb20gZGVsaW1pdGVkIHN0cmluZy5cbiAgICogU3BsaXRzIG9uIGRlbGltaXRlciBhbmQgdHJpbXMgd2hpdGVzcGFjZSBmcm9tIGVhY2ggaXRlbS5cbiAgICpcbiAgICogQHBhcmFtIGNzdlN0cmluZyAtIERlbGltaXRlZCBzdHJpbmcgdmFsdWVzXG4gICAqIEBwYXJhbSBkZWxpbWl0ZXIgLSBPcHRpb25hbCBkZWxpbWl0ZXIgKGRlZmF1bHRzIHRvIGNvbW1hKVxuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgZm9yIGNoYWluaW5nXG4gICAqL1xuICBjc3YoY3N2U3RyaW5nOiBzdHJpbmcsIGRlbGltaXRlciA9ICcsJyk6IHRoaXMge1xuICAgIHRoaXMuX2NvbmZpZy5kYXRhID0gY3N2U3RyaW5nLnNwbGl0KGRlbGltaXRlcikubWFwKChpdGVtKSA9PiBpdGVtLnRyaW0oKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBkYXRhIGZyb20gSlNPTiBzdHJpbmcuXG4gICAqIEFycmF5cyBzZXQgZGlyZWN0bHksIG9iamVjdHMgY29udmVydGVkIHRvIGtleS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHBhcmFtIGpzb25TdHJpbmcgLSBKU09OIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgZm9yIGNoYWluaW5nXG4gICAqIEB0aHJvd3Mge1N5bnRheEVycm9yfSBJZiBKU09OIGlzIGludmFsaWRcbiAgICogQHRocm93cyB7RXJyb3J9IElmIEpTT04gaXMgbm90IGFuIGFycmF5IG9yIG9iamVjdFxuICAgKi9cbiAganNvbihqc29uU3RyaW5nOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XG4gICAgICB0aGlzLl9jb25maWcuZGF0YSA9IHBhcnNlZFxuICAgIH0gZWxzZSBpZiAocGFyc2VkICYmIHR5cGVvZiBwYXJzZWQgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLl9jb25maWcuZGF0YSA9IE9iamVjdC5lbnRyaWVzKHBhcnNlZCkubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7IGtleSwgdmFsdWUgfSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSlNPTiBtdXN0IGJlIGFuIGFycmF5IG9yIG9iamVjdCcpXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasource.static.d.ts","sourceRoot":"","sources":["../../src/datasource/datasource.static.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACzF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAKhE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,OAAO,eAAe,CAAC,MAAM,CAAA;IACnC,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE;QAAE,IAAI,EAAE,OAAO,EAAE,CAAA;KAAE,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAanE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAA;IAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;CAC3B;AAED,qBAAa,uBAAwB,SAAQ,qBAAqB,CAAC,gBAAgB,CAAC;IAQlF,YAAY,OAAO,EAAE,qBAAqB,EAOzC;IAUD,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,IAAI,CAG5C;IAWD,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAW7B;CACF","sourcesContent":["import { DATASOURCE_TYPE, type DatasourceId, type Primitive } from '../abstract/index.js'\nimport { DatasourceBaseBuilder } from './datasource.abstract.js'\n\n/**\n * Static datasource definition.\n */\nexport type StaticDatasource = {\n type: typeof DATASOURCE_TYPE.STATIC\n datasourceId: DatasourceId\n instanceId?: string\n options: { data: unknown[] }\n}\n\nexport type InlineData = Array<Primitive | Record<string, unknown>>\n\n/**\n * Define fixed data directly in code.\n * Use for dropdown options, config, lookups.\n * Data embedded at build time, no sync needed.\n * Always available offline with zero latency.\n * Accept arrays of objects or primitives.\n * Global datasources prevent duplication.\n * Update requires republishing application.\n * Not for frequently changing data.\n * @alias datasource.static\n */\nexport interface StaticDatasourceInput {\n readonly datasourceId: string | DatasourceId\n readonly data?: InlineData\n}\n\nexport class StaticDatasourceBuilder extends DatasourceBaseBuilder<StaticDatasource> {\n /**\n * Creates a new static datasource builder with optional embedded data.\n * @param options - Configuration options\n * @param options.datasourceId - Unique identifier. Format: Mixedcase 2-50, prefer kebab-case, starts alpha, contains alphanum and `-`, ends alphanum\n * @param options.data - Optional array of primitive values or objects to embed (defaults to empty array)\n * @throws {Error} If data is provided but not an array\n */\n constructor(options: StaticDatasourceInput) {\n const { datasourceId, data = [] } = options\n super(DATASOURCE_TYPE.STATIC, { datasourceId })\n if (typeof data !== 'undefined' && !Array.isArray(data)) {\n throw new Error('Data must be an array')\n }\n this._config.data = data\n }\n\n /**\n * Set data from delimited string.\n * Splits on delimiter and trims whitespace from each item.\n *\n * @param csvString - Delimited string values\n * @param delimiter - Optional delimiter (defaults to comma)\n * @returns This builder for chaining\n */\n csv(csvString: string, delimiter = ','): this {\n this._config.data = csvString.split(delimiter).map((item) => item.trim())\n return this\n }\n\n /**\n * Set data from JSON string.\n * Arrays set directly, objects converted to key-value pairs.\n *\n * @param jsonString - JSON string to parse\n * @returns This builder for chaining\n * @throws {SyntaxError} If JSON is invalid\n * @throws {Error} If JSON is not an array or object\n */\n json(jsonString: string): this {\n const parsed = JSON.parse(jsonString)\n\n if (Array.isArray(parsed)) {\n this._config.data = parsed\n } else if (parsed && typeof parsed === 'object') {\n this._config.data = Object.entries(parsed).map(([key, value]) => ({ key, value }))\n } else {\n throw new Error('JSON must be an array or object')\n }\n return this\n }\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { DATASOURCE_TYPE } from '../abstract/index.js';
|
|
2
|
+
import { DatasourceBaseBuilder } from './datasource.abstract.js';
|
|
3
|
+
export class StaticDatasourceBuilder extends DatasourceBaseBuilder {
|
|
4
|
+
constructor(options) {
|
|
5
|
+
const { datasourceId, data = [] } = options;
|
|
6
|
+
super(DATASOURCE_TYPE.STATIC, { datasourceId });
|
|
7
|
+
if (typeof data !== 'undefined' && !Array.isArray(data)) {
|
|
8
|
+
throw new Error('Data must be an array');
|
|
9
|
+
}
|
|
10
|
+
this._config.data = data;
|
|
11
|
+
}
|
|
12
|
+
csv(csvString, delimiter = ',') {
|
|
13
|
+
this._config.data = csvString.split(delimiter).map((item) => item.trim());
|
|
14
|
+
return this;
|
|
15
|
+
}
|
|
16
|
+
json(jsonString) {
|
|
17
|
+
const parsed = JSON.parse(jsonString);
|
|
18
|
+
if (Array.isArray(parsed)) {
|
|
19
|
+
this._config.data = parsed;
|
|
20
|
+
}
|
|
21
|
+
else if (parsed && typeof parsed === 'object') {
|
|
22
|
+
this._config.data = Object.entries(parsed).map(([key, value]) => ({ key, value }));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
throw new Error('JSON must be an array or object');
|
|
26
|
+
}
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5zdGF0aWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YXNvdXJjZS9kYXRhc291cmNlLnN0YXRpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFxQyxNQUFNLHNCQUFzQixDQUFBO0FBQ3pGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBOEJoRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEscUJBQXVDO0lBUWxGLFlBQVksT0FBOEIsRUFBRTtRQUMxQyxNQUFNLEVBQUUsWUFBWSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDM0MsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFBO1FBQy9DLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUMxQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO0lBQUEsQ0FDekI7SUFVRCxHQUFHLENBQUMsU0FBaUIsRUFBRSxTQUFTLEdBQUcsR0FBRyxFQUFRO1FBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUN6RSxPQUFPLElBQUksQ0FBQTtJQUFBLENBQ1o7SUFXRCxJQUFJLENBQUMsVUFBa0IsRUFBUTtRQUM3QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBRXJDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQTtRQUM1QixDQUFDO2FBQU0sSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDcEYsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7UUFDcEQsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQUEsQ0FDWjtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREFUQVNPVVJDRV9UWVBFLCB0eXBlIERhdGFzb3VyY2VJZCwgdHlwZSBQcmltaXRpdmUgfSBmcm9tICcuLi9hYnN0cmFjdC9pbmRleC5qcydcbmltcG9ydCB7IERhdGFzb3VyY2VCYXNlQnVpbGRlciB9IGZyb20gJy4vZGF0YXNvdXJjZS5hYnN0cmFjdC5qcydcblxuLyoqXG4gKiBTdGF0aWMgZGF0YXNvdXJjZSBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgdHlwZSBTdGF0aWNEYXRhc291cmNlID0ge1xuICB0eXBlOiB0eXBlb2YgREFUQVNPVVJDRV9UWVBFLlNUQVRJQ1xuICBkYXRhc291cmNlSWQ6IERhdGFzb3VyY2VJZFxuICBpbnN0YW5jZUlkPzogc3RyaW5nXG4gIG9wdGlvbnM6IHsgZGF0YTogdW5rbm93bltdIH1cbn1cblxuZXhwb3J0IHR5cGUgSW5saW5lRGF0YSA9IEFycmF5PFByaW1pdGl2ZSB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+PlxuXG4vKipcbiAqIERlZmluZSBmaXhlZCBkYXRhIGRpcmVjdGx5IGluIGNvZGUuXG4gKiBVc2UgZm9yIGRyb3Bkb3duIG9wdGlvbnMsIGNvbmZpZywgbG9va3Vwcy5cbiAqIERhdGEgZW1iZWRkZWQgYXQgYnVpbGQgdGltZSwgbm8gc3luYyBuZWVkZWQuXG4gKiBBbHdheXMgYXZhaWxhYmxlIG9mZmxpbmUgd2l0aCB6ZXJvIGxhdGVuY3kuXG4gKiBBY2NlcHQgYXJyYXlzIG9mIG9iamVjdHMgb3IgcHJpbWl0aXZlcy5cbiAqIEdsb2JhbCBkYXRhc291cmNlcyBwcmV2ZW50IGR1cGxpY2F0aW9uLlxuICogVXBkYXRlIHJlcXVpcmVzIHJlcHVibGlzaGluZyBhcHBsaWNhdGlvbi5cbiAqIE5vdCBmb3IgZnJlcXVlbnRseSBjaGFuZ2luZyBkYXRhLlxuICogQGFsaWFzIGRhdGFzb3VyY2Uuc3RhdGljXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGljRGF0YXNvdXJjZUlucHV0IHtcbiAgcmVhZG9ubHkgZGF0YXNvdXJjZUlkOiBzdHJpbmcgfCBEYXRhc291cmNlSWRcbiAgcmVhZG9ubHkgZGF0YT86IElubGluZURhdGFcbn1cblxuZXhwb3J0IGNsYXNzIFN0YXRpY0RhdGFzb3VyY2VCdWlsZGVyIGV4dGVuZHMgRGF0YXNvdXJjZUJhc2VCdWlsZGVyPFN0YXRpY0RhdGFzb3VyY2U+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgc3RhdGljIGRhdGFzb3VyY2UgYnVpbGRlciB3aXRoIG9wdGlvbmFsIGVtYmVkZGVkIGRhdGEuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLmRhdGFzb3VyY2VJZCAtIFVuaXF1ZSBpZGVudGlmaWVyLiBGb3JtYXQ6IE1peGVkY2FzZSAyLTUwLCBwcmVmZXIga2ViYWItY2FzZSwgc3RhcnRzIGFscGhhLCBjb250YWlucyBhbHBoYW51bSBhbmQgYC1gLCBlbmRzIGFscGhhbnVtXG4gICAqIEBwYXJhbSBvcHRpb25zLmRhdGEgLSBPcHRpb25hbCBhcnJheSBvZiBwcmltaXRpdmUgdmFsdWVzIG9yIG9iamVjdHMgdG8gZW1iZWQgKGRlZmF1bHRzIHRvIGVtcHR5IGFycmF5KVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgZGF0YSBpcyBwcm92aWRlZCBidXQgbm90IGFuIGFycmF5XG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTdGF0aWNEYXRhc291cmNlSW5wdXQpIHtcbiAgICBjb25zdCB7IGRhdGFzb3VyY2VJZCwgZGF0YSA9IFtdIH0gPSBvcHRpb25zXG4gICAgc3VwZXIoREFUQVNPVVJDRV9UWVBFLlNUQVRJQywgeyBkYXRhc291cmNlSWQgfSlcbiAgICBpZiAodHlwZW9mIGRhdGEgIT09ICd1bmRlZmluZWQnICYmICFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgbXVzdCBiZSBhbiBhcnJheScpXG4gICAgfVxuICAgIHRoaXMuX2NvbmZpZy5kYXRhID0gZGF0YVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCBkYXRhIGZyb20gZGVsaW1pdGVkIHN0cmluZy5cbiAgICogU3BsaXRzIG9uIGRlbGltaXRlciBhbmQgdHJpbXMgd2hpdGVzcGFjZSBmcm9tIGVhY2ggaXRlbS5cbiAgICpcbiAgICogQHBhcmFtIGNzdlN0cmluZyAtIERlbGltaXRlZCBzdHJpbmcgdmFsdWVzXG4gICAqIEBwYXJhbSBkZWxpbWl0ZXIgLSBPcHRpb25hbCBkZWxpbWl0ZXIgKGRlZmF1bHRzIHRvIGNvbW1hKVxuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgZm9yIGNoYWluaW5nXG4gICAqL1xuICBjc3YoY3N2U3RyaW5nOiBzdHJpbmcsIGRlbGltaXRlciA9ICcsJyk6IHRoaXMge1xuICAgIHRoaXMuX2NvbmZpZy5kYXRhID0gY3N2U3RyaW5nLnNwbGl0KGRlbGltaXRlcikubWFwKChpdGVtKSA9PiBpdGVtLnRyaW0oKSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBkYXRhIGZyb20gSlNPTiBzdHJpbmcuXG4gICAqIEFycmF5cyBzZXQgZGlyZWN0bHksIG9iamVjdHMgY29udmVydGVkIHRvIGtleS12YWx1ZSBwYWlycy5cbiAgICpcbiAgICogQHBhcmFtIGpzb25TdHJpbmcgLSBKU09OIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgZm9yIGNoYWluaW5nXG4gICAqIEB0aHJvd3Mge1N5bnRheEVycm9yfSBJZiBKU09OIGlzIGludmFsaWRcbiAgICogQHRocm93cyB7RXJyb3J9IElmIEpTT04gaXMgbm90IGFuIGFycmF5IG9yIG9iamVjdFxuICAgKi9cbiAganNvbihqc29uU3RyaW5nOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWQpKSB7XG4gICAgICB0aGlzLl9jb25maWcuZGF0YSA9IHBhcnNlZFxuICAgIH0gZWxzZSBpZiAocGFyc2VkICYmIHR5cGVvZiBwYXJzZWQgPT09ICdvYmplY3QnKSB7XG4gICAgICB0aGlzLl9jb25maWcuZGF0YSA9IE9iamVjdC5lbnRyaWVzKHBhcnNlZCkubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7IGtleSwgdmFsdWUgfSkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSlNPTiBtdXN0IGJlIGFuIGFycmF5IG9yIG9iamVjdCcpXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DATASOURCE_TYPE, type DatasourceId, type InstanceId } from '../abstract/index.js';
|
|
2
|
+
import { DatasourceBaseBuilder } from './datasource.abstract.js';
|
|
3
|
+
export type SystemDatasource = {
|
|
4
|
+
type: typeof DATASOURCE_TYPE.SYSTEM;
|
|
5
|
+
datasourceId: DatasourceId;
|
|
6
|
+
instanceId?: string;
|
|
7
|
+
options: {
|
|
8
|
+
source: 'flags';
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export interface SystemDatasourceInput {
|
|
12
|
+
readonly datasourceId: string | DatasourceId;
|
|
13
|
+
readonly instanceId?: InstanceId;
|
|
14
|
+
}
|
|
15
|
+
export declare class SystemDatasourceBuilder extends DatasourceBaseBuilder<SystemDatasource> {
|
|
16
|
+
constructor(options: SystemDatasourceInput);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5zeXN0ZW0uZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhc291cmNlL2RhdGFzb3VyY2Uuc3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxZQUFZLEVBQUUsS0FBSyxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUMxRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUtoRSxNQUFNLE1BQU0sZ0JBQWdCLEdBQUc7SUFDN0IsSUFBSSxFQUFFLE9BQU8sZUFBZSxDQUFDLE1BQU0sQ0FBQTtJQUNuQyxZQUFZLEVBQUUsWUFBWSxDQUFBO0lBQzFCLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtJQUNuQixPQUFPLEVBQUU7UUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFBO0tBQUUsQ0FBQTtDQUM3QixDQUFBO0FBYUQsTUFBTSxXQUFXLHFCQUFxQjtJQUNwQyxRQUFRLENBQUMsWUFBWSxFQUFFLE1BQU0sR0FBRyxZQUFZLENBQUE7SUFDNUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFVBQVUsQ0FBQTtDQUNqQztBQUVELHFCQUFhLHVCQUF3QixTQUFRLHFCQUFxQixDQUFDLGdCQUFnQixDQUFDO0lBT2xGLFlBQVksT0FBTyxFQUFFLHFCQUFxQixFQUl6QztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREFUQVNPVVJDRV9UWVBFLCB0eXBlIERhdGFzb3VyY2VJZCwgdHlwZSBJbnN0YW5jZUlkIH0gZnJvbSAnLi4vYWJzdHJhY3QvaW5kZXguanMnXG5pbXBvcnQgeyBEYXRhc291cmNlQmFzZUJ1aWxkZXIgfSBmcm9tICcuL2RhdGFzb3VyY2UuYWJzdHJhY3QuanMnXG5cbi8qKlxuICogU3lzdGVtIGRhdGFzb3VyY2UgZGVmaW5pdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgU3lzdGVtRGF0YXNvdXJjZSA9IHtcbiAgdHlwZTogdHlwZW9mIERBVEFTT1VSQ0VfVFlQRS5TWVNURU1cbiAgZGF0YXNvdXJjZUlkOiBEYXRhc291cmNlSWRcbiAgaW5zdGFuY2VJZD86IHN0cmluZ1xuICBvcHRpb25zOiB7IHNvdXJjZTogJ2ZsYWdzJyB9XG59XG5cbi8qKlxuICogQWNjZXNzIHN5c3RlbS1wcm92aWRlZCBkYXRhIChmbGFncyBvbmx5KS5cbiAqIFJldHVybnMgYXJyYXkgb2YgY291bnRyaWVzIHdpdGggZmxhZyBlbW9qaXMuXG4gKiBFYWNoIGl0ZW0gaGFzOiBjb2RlLCBuYW1lLCBmbGFnIHByb3BlcnRpZXMuXG4gKiBVc2UgZm9yIGNvdW50cnkgZHJvcGRvd25zIG9yIGZsYWcgZGlzcGxheXMuXG4gKiBObyBjb25maWd1cmF0aW9uIG5lZWRlZCwganVzdCBzb3VyY2U6IGZsYWdzLlxuICogQWx3YXlzIHVwLXRvLWRhdGUgd2l0aCBhbGwgY291bnRyaWVzLlxuICogRmxhZyBlbW9qaXMgd29yayBhcyBpY29ucyBpbiBjb21wb25lbnRzLlxuICogWmVybyBtYWludGVuYW5jZSByZXF1aXJlZC5cbiAqIEBhbGlhcyBkYXRhc291cmNlLnN5c3RlbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbURhdGFzb3VyY2VJbnB1dCB7XG4gIHJlYWRvbmx5IGRhdGFzb3VyY2VJZDogc3RyaW5nIHwgRGF0YXNvdXJjZUlkXG4gIHJlYWRvbmx5IGluc3RhbmNlSWQ/OiBJbnN0YW5jZUlkXG59XG5cbmV4cG9ydCBjbGFzcyBTeXN0ZW1EYXRhc291cmNlQnVpbGRlciBleHRlbmRzIERhdGFzb3VyY2VCYXNlQnVpbGRlcjxTeXN0ZW1EYXRhc291cmNlPiB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHN5c3RlbSBkYXRhc291cmNlIGJ1aWxkZXIuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSBvcHRpb25zLmRhdGFzb3VyY2VJZCAtIFVuaXF1ZSBpZGVudGlmaWVyLiBGb3JtYXQ6IE1peGVkY2FzZSAyLTUwLCBwcmVmZXIga2ViYWItY2FzZSwgc3RhcnRzIGFscGhhLCBjb250YWlucyBhbHBoYW51bSBhbmQgYC1gLCBlbmRzIGFscGhhbnVtXG4gICAqIEBwYXJhbSBvcHRpb25zLmluc3RhbmNlSWQgLSBPcHRpb25hbCBpbnN0YW5jZSBpZGVudGlmaWVyIChkZWZhdWx0cyB0byBkYXRhc291cmNlSWQpXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTeXN0ZW1EYXRhc291cmNlSW5wdXQpIHtcbiAgICBjb25zdCB7IGRhdGFzb3VyY2VJZCwgaW5zdGFuY2VJZCB9ID0gb3B0aW9uc1xuICAgIHN1cGVyKERBVEFTT1VSQ0VfVFlQRS5TWVNURU0sIHsgZGF0YXNvdXJjZUlkLCBpbnN0YW5jZUlkIH0pXG4gICAgdGhpcy5fY29uZmlnLnNvdXJjZSA9ICdmbGFncydcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datasource.system.d.ts","sourceRoot":"","sources":["../../src/datasource/datasource.system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAKhE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,OAAO,eAAe,CAAC,MAAM,CAAA;IACnC,YAAY,EAAE,YAAY,CAAA;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAA;CAC7B,CAAA;AAaD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAA;IAC5C,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CACjC;AAED,qBAAa,uBAAwB,SAAQ,qBAAqB,CAAC,gBAAgB,CAAC;IAOlF,YAAY,OAAO,EAAE,qBAAqB,EAIzC;CACF","sourcesContent":["import { DATASOURCE_TYPE, type DatasourceId, type InstanceId } from '../abstract/index.js'\nimport { DatasourceBaseBuilder } from './datasource.abstract.js'\n\n/**\n * System datasource definition.\n */\nexport type SystemDatasource = {\n type: typeof DATASOURCE_TYPE.SYSTEM\n datasourceId: DatasourceId\n instanceId?: string\n options: { source: 'flags' }\n}\n\n/**\n * Access system-provided data (flags only).\n * Returns array of countries with flag emojis.\n * Each item has: code, name, flag properties.\n * Use for country dropdowns or flag displays.\n * No configuration needed, just source: flags.\n * Always up-to-date with all countries.\n * Flag emojis work as icons in components.\n * Zero maintenance required.\n * @alias datasource.system\n */\nexport interface SystemDatasourceInput {\n readonly datasourceId: string | DatasourceId\n readonly instanceId?: InstanceId\n}\n\nexport class SystemDatasourceBuilder extends DatasourceBaseBuilder<SystemDatasource> {\n /**\n * Creates a new system datasource builder.\n * @param options - Configuration options\n * @param options.datasourceId - Unique identifier. Format: Mixedcase 2-50, prefer kebab-case, starts alpha, contains alphanum and `-`, ends alphanum\n * @param options.instanceId - Optional instance identifier (defaults to datasourceId)\n */\n constructor(options: SystemDatasourceInput) {\n const { datasourceId, instanceId } = options\n super(DATASOURCE_TYPE.SYSTEM, { datasourceId, instanceId })\n this._config.source = 'flags'\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { DATASOURCE_TYPE } from '../abstract/index.js';
|
|
2
|
+
import { DatasourceBaseBuilder } from './datasource.abstract.js';
|
|
3
|
+
export class SystemDatasourceBuilder extends DatasourceBaseBuilder {
|
|
4
|
+
constructor(options) {
|
|
5
|
+
const { datasourceId, instanceId } = options;
|
|
6
|
+
super(DATASOURCE_TYPE.SYSTEM, { datasourceId, instanceId });
|
|
7
|
+
this._config.source = 'flags';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5zeXN0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YXNvdXJjZS9kYXRhc291cmNlLnN5c3RlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFzQyxNQUFNLHNCQUFzQixDQUFBO0FBQzFGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBNEJoRSxNQUFNLE9BQU8sdUJBQXdCLFNBQVEscUJBQXVDO0lBT2xGLFlBQVksT0FBOEIsRUFBRTtRQUMxQyxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUM1QyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFBO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQTtJQUFBLENBQzlCO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEQVRBU09VUkNFX1RZUEUsIHR5cGUgRGF0YXNvdXJjZUlkLCB0eXBlIEluc3RhbmNlSWQgfSBmcm9tICcuLi9hYnN0cmFjdC9pbmRleC5qcydcbmltcG9ydCB7IERhdGFzb3VyY2VCYXNlQnVpbGRlciB9IGZyb20gJy4vZGF0YXNvdXJjZS5hYnN0cmFjdC5qcydcblxuLyoqXG4gKiBTeXN0ZW0gZGF0YXNvdXJjZSBkZWZpbml0aW9uLlxuICovXG5leHBvcnQgdHlwZSBTeXN0ZW1EYXRhc291cmNlID0ge1xuICB0eXBlOiB0eXBlb2YgREFUQVNPVVJDRV9UWVBFLlNZU1RFTVxuICBkYXRhc291cmNlSWQ6IERhdGFzb3VyY2VJZFxuICBpbnN0YW5jZUlkPzogc3RyaW5nXG4gIG9wdGlvbnM6IHsgc291cmNlOiAnZmxhZ3MnIH1cbn1cblxuLyoqXG4gKiBBY2Nlc3Mgc3lzdGVtLXByb3ZpZGVkIGRhdGEgKGZsYWdzIG9ubHkpLlxuICogUmV0dXJucyBhcnJheSBvZiBjb3VudHJpZXMgd2l0aCBmbGFnIGVtb2ppcy5cbiAqIEVhY2ggaXRlbSBoYXM6IGNvZGUsIG5hbWUsIGZsYWcgcHJvcGVydGllcy5cbiAqIFVzZSBmb3IgY291bnRyeSBkcm9wZG93bnMgb3IgZmxhZyBkaXNwbGF5cy5cbiAqIE5vIGNvbmZpZ3VyYXRpb24gbmVlZGVkLCBqdXN0IHNvdXJjZTogZmxhZ3MuXG4gKiBBbHdheXMgdXAtdG8tZGF0ZSB3aXRoIGFsbCBjb3VudHJpZXMuXG4gKiBGbGFnIGVtb2ppcyB3b3JrIGFzIGljb25zIGluIGNvbXBvbmVudHMuXG4gKiBaZXJvIG1haW50ZW5hbmNlIHJlcXVpcmVkLlxuICogQGFsaWFzIGRhdGFzb3VyY2Uuc3lzdGVtXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3lzdGVtRGF0YXNvdXJjZUlucHV0IHtcbiAgcmVhZG9ubHkgZGF0YXNvdXJjZUlkOiBzdHJpbmcgfCBEYXRhc291cmNlSWRcbiAgcmVhZG9ubHkgaW5zdGFuY2VJZD86IEluc3RhbmNlSWRcbn1cblxuZXhwb3J0IGNsYXNzIFN5c3RlbURhdGFzb3VyY2VCdWlsZGVyIGV4dGVuZHMgRGF0YXNvdXJjZUJhc2VCdWlsZGVyPFN5c3RlbURhdGFzb3VyY2U+IHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgc3lzdGVtIGRhdGFzb3VyY2UgYnVpbGRlci5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBDb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICogQHBhcmFtIG9wdGlvbnMuZGF0YXNvdXJjZUlkIC0gVW5pcXVlIGlkZW50aWZpZXIuIEZvcm1hdDogTWl4ZWRjYXNlIDItNTAsIHByZWZlciBrZWJhYi1jYXNlLCBzdGFydHMgYWxwaGEsIGNvbnRhaW5zIGFscGhhbnVtIGFuZCBgLWAsIGVuZHMgYWxwaGFudW1cbiAgICogQHBhcmFtIG9wdGlvbnMuaW5zdGFuY2VJZCAtIE9wdGlvbmFsIGluc3RhbmNlIGlkZW50aWZpZXIgKGRlZmF1bHRzIHRvIGRhdGFzb3VyY2VJZClcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFN5c3RlbURhdGFzb3VyY2VJbnB1dCkge1xuICAgIGNvbnN0IHsgZGF0YXNvdXJjZUlkLCBpbnN0YW5jZUlkIH0gPSBvcHRpb25zXG4gICAgc3VwZXIoREFUQVNPVVJDRV9UWVBFLlNZU1RFTSwgeyBkYXRhc291cmNlSWQsIGluc3RhbmNlSWQgfSlcbiAgICB0aGlzLl9jb25maWcuc291cmNlID0gJ2ZsYWdzJ1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type ActionId } from '../abstract/index.js';
|
|
2
|
+
export interface EntityDescriptor {
|
|
3
|
+
readonly packageName?: string;
|
|
4
|
+
readonly entityName: string;
|
|
5
|
+
readonly description?: string;
|
|
6
|
+
readonly syncAction?: ActionId;
|
|
7
|
+
readonly syncExpand?: string;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmRlc2NyaXB0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhc291cmNlL2VudGl0eS5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBRXBELE1BQU0sV0FBVyxnQkFBZ0I7SUFDL0IsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtJQUM3QixRQUFRLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQTtJQUMzQixRQUFRLENBQUMsV0FBVyxDQUFDLEVBQUUsTUFBTSxDQUFBO0lBQzdCLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLENBQUE7SUFFOUIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE1BQU0sQ0FBQTtDQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQWN0aW9uSWQgfSBmcm9tICcuLi9hYnN0cmFjdC9pbmRleC5qcydcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlEZXNjcmlwdG9yIHtcbiAgcmVhZG9ubHkgcGFja2FnZU5hbWU/OiBzdHJpbmdcbiAgcmVhZG9ubHkgZW50aXR5TmFtZTogc3RyaW5nXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIHJlYWRvbmx5IHN5bmNBY3Rpb24/OiBBY3Rpb25JZFxuICAvKiogT0RhdGEgJGV4cGFuZCB2YWx1ZSB0byB1c2Ugd2hlbiBzeW5jaW5nIHRoaXMgZW50aXR5ICovXG4gIHJlYWRvbmx5IHN5bmNFeHBhbmQ/OiBzdHJpbmdcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.descriptor.d.ts","sourceRoot":"","sources":["../../src/datasource/entity.descriptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAA;IAE9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B","sourcesContent":["import { type ActionId } from '../abstract/index.js'\n\nexport interface EntityDescriptor {\n readonly packageName?: string\n readonly entityName: string\n readonly description?: string\n readonly syncAction?: ActionId\n /** OData $expand value to use when syncing this entity */\n readonly syncExpand?: string\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YXNvdXJjZS9lbnRpdHkuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBBY3Rpb25JZCB9IGZyb20gJy4uL2Fic3RyYWN0L2luZGV4LmpzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eURlc2NyaXB0b3Ige1xuICByZWFkb25seSBwYWNrYWdlTmFtZT86IHN0cmluZ1xuICByZWFkb25seSBlbnRpdHlOYW1lOiBzdHJpbmdcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmdcbiAgcmVhZG9ubHkgc3luY0FjdGlvbj86IEFjdGlvbklkXG4gIC8qKiBPRGF0YSAkZXhwYW5kIHZhbHVlIHRvIHVzZSB3aGVuIHN5bmNpbmcgdGhpcyBlbnRpdHkgKi9cbiAgcmVhZG9ubHkgc3luY0V4cGFuZD86IHN0cmluZ1xufVxuIl19
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './datasource.abstract.js';
|
|
2
|
+
export * from './datasource.reference.js';
|
|
3
|
+
export * from './datasource.sdk.js';
|
|
4
|
+
export * from './datasource.sqlite.js';
|
|
5
|
+
export * from './datasource.static.js';
|
|
6
|
+
export * from './datasource.system.js';
|
|
7
|
+
export * from './sqlite-normalizer.js';
|
|
8
|
+
export * from './sqlite-validator.js';
|
|
9
|
+
export type * from './datasource.descriptor.js';
|
|
10
|
+
export type * from './entity.descriptor.js';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhc291cmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUE7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQTtBQUN6QyxjQUFjLHFCQUFxQixDQUFBO0FBQ25DLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyx1QkFBdUIsQ0FBQTtBQUVyQyxtQkFBbUIsNEJBQTRCLENBQUE7QUFDL0MsbUJBQW1CLHdCQUF3QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYXRhc291cmNlLmFic3RyYWN0LmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhc291cmNlLnJlZmVyZW5jZS5qcydcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXNvdXJjZS5zZGsuanMnXG5leHBvcnQgKiBmcm9tICcuL2RhdGFzb3VyY2Uuc3FsaXRlLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhc291cmNlLnN0YXRpYy5qcydcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXNvdXJjZS5zeXN0ZW0uanMnXG5leHBvcnQgKiBmcm9tICcuL3NxbGl0ZS1ub3JtYWxpemVyLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9zcWxpdGUtdmFsaWRhdG9yLmpzJ1xuXG5leHBvcnQgdHlwZSAqIGZyb20gJy4vZGF0YXNvdXJjZS5kZXNjcmlwdG9yLmpzJ1xuZXhwb3J0IHR5cGUgKiBmcm9tICcuL2VudGl0eS5kZXNjcmlwdG9yLmpzJ1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datasource/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,uBAAuB,CAAA;AAErC,mBAAmB,4BAA4B,CAAA;AAC/C,mBAAmB,wBAAwB,CAAA","sourcesContent":["export * from './datasource.abstract.js'\nexport * from './datasource.reference.js'\nexport * from './datasource.sdk.js'\nexport * from './datasource.sqlite.js'\nexport * from './datasource.static.js'\nexport * from './datasource.system.js'\nexport * from './sqlite-normalizer.js'\nexport * from './sqlite-validator.js'\n\nexport type * from './datasource.descriptor.js'\nexport type * from './entity.descriptor.js'\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './datasource.abstract.js';
|
|
2
|
+
export * from './datasource.reference.js';
|
|
3
|
+
export * from './datasource.sdk.js';
|
|
4
|
+
export * from './datasource.sqlite.js';
|
|
5
|
+
export * from './datasource.static.js';
|
|
6
|
+
export * from './datasource.system.js';
|
|
7
|
+
export * from './sqlite-normalizer.js';
|
|
8
|
+
export * from './sqlite-validator.js';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZGF0YXNvdXJjZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUEwQixDQUFBO0FBQ3hDLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUE7QUFDdEMsY0FBYyx3QkFBd0IsQ0FBQTtBQUN0QyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGFzb3VyY2UuYWJzdHJhY3QuanMnXG5leHBvcnQgKiBmcm9tICcuL2RhdGFzb3VyY2UucmVmZXJlbmNlLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhc291cmNlLnNkay5qcydcbmV4cG9ydCAqIGZyb20gJy4vZGF0YXNvdXJjZS5zcWxpdGUuanMnXG5leHBvcnQgKiBmcm9tICcuL2RhdGFzb3VyY2Uuc3RhdGljLmpzJ1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhc291cmNlLnN5c3RlbS5qcydcbmV4cG9ydCAqIGZyb20gJy4vc3FsaXRlLW5vcm1hbGl6ZXIuanMnXG5leHBvcnQgKiBmcm9tICcuL3NxbGl0ZS12YWxpZGF0b3IuanMnXG5cbmV4cG9ydCB0eXBlICogZnJvbSAnLi9kYXRhc291cmNlLmRlc2NyaXB0b3IuanMnXG5leHBvcnQgdHlwZSAqIGZyb20gJy4vZW50aXR5LmRlc2NyaXB0b3IuanMnXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function normalizeQuery(query: string): string;
|
|
2
|
+
export declare function queriesEquivalent(a: string, b: string): boolean;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsaXRlLW5vcm1hbGl6ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kYXRhc291cmNlL3NxbGl0ZS1ub3JtYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQStQQSx3QkFBZ0IsY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUtwRDtBQWFELHdCQUFnQixpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUUvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQVNUIH0gZnJvbSAnbm9kZS1zcWwtcGFyc2VyJ1xuaW1wb3J0IFNxbGl0ZVBhcnNlciBmcm9tICdub2RlLXNxbC1wYXJzZXIvYnVpbGQvc3FsaXRlLmpzJ1xuXG5jb25zdCBTcWxQYXJzZXJDbGFzcyA9IFNxbGl0ZVBhcnNlci5QYXJzZXJcblxuLy8gVXNlIFNRTGl0ZSBncmFtbWFyIGZvciBwYXJzaW5nOyBvdXRwdXQgd2l0aCBUcmFuc2FjdFNRTCBicmFja2V0IHF1b3RpbmcuXG4vLyBUaGUgU1FMaXRlIGJ1aWxkIGRvZXMgbm90IGFjY2VwdCBbYnJhY2tldF0gcXVvdGluZyBhcyBpbnB1dCwgc28gd2UgcHJlLXByb2Nlc3Ncbi8vIFtmb29dIOKGkiBgZm9vYCAoYmFja3RpY2spLCB3aGljaCB0aGUgU1FMaXRlIGdyYW1tYXIgYWNjZXB0cyBhbmQgbm9ybWFsaXplcyB0byBcImZvb1wiLlxuLy8gc3FsaWZ5IHdpdGggVHJhbnNhY3RTUUwgb3B0cyB0aGVuIHJlLWVtaXRzIGFsbCBpZGVudGlmaWVycyBhcyBbZm9vXS5cbmNvbnN0IFNRTElURV9PUFQgPSB7IGRhdGFiYXNlOiAnU1FMaXRlJyB9XG5jb25zdCBUU1FMX09QVCA9IHsgZGF0YWJhc2U6ICdUcmFuc2FjdFNRTCcgfVxuY29uc3Qgc3FsUGFyc2VyID0gbmV3IFNxbFBhcnNlckNsYXNzKClcblxuLyoqIENvbnZlcnQgW2JyYWNrZXRdIGlkZW50aWZpZXJzIHRvIGJhY2t0aWNrIHNvIHRoZSBTUUxpdGUgcGFyc2VyIGFjY2VwdHMgdGhlbS4gKi9cbmZ1bmN0aW9uIGJyYWNrZXRzVG9CYWNrdGlja3MocXVlcnk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCByZXN1bHQgPSAnJ1xuICBsZXQgaSA9IDBcblxuICBsZXQgaW5TaW5nbGVRdW90ZSA9IGZhbHNlXG4gIGxldCBpbkRvdWJsZVF1b3RlID0gZmFsc2VcbiAgbGV0IGluQmFja3RpY2sgPSBmYWxzZVxuICBsZXQgaW5MaW5lQ29tbWVudCA9IGZhbHNlXG4gIGxldCBpbkJsb2NrQ29tbWVudCA9IGZhbHNlXG5cbiAgd2hpbGUgKGkgPCBxdWVyeS5sZW5ndGgpIHtcbiAgICBjb25zdCBjaGFyID0gcXVlcnlbaV1cbiAgICBjb25zdCBuZXh0ID0gaSArIDEgPCBxdWVyeS5sZW5ndGggPyBxdWVyeVtpICsgMV0gOiAnJ1xuXG4gICAgLy8gSGFuZGxlIGVuZCBvZiBsaW5lIGNvbW1lbnRcbiAgICBpZiAoaW5MaW5lQ29tbWVudCkge1xuICAgICAgcmVzdWx0ICs9IGNoYXJcbiAgICAgIGlmIChjaGFyID09PSAnXFxuJykge1xuICAgICAgICBpbkxpbmVDb21tZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIGkgKz0gMVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgZW5kIG9mIGJsb2NrIGNvbW1lbnRcbiAgICBpZiAoaW5CbG9ja0NvbW1lbnQpIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyXG4gICAgICBpZiAoY2hhciA9PT0gJyonICYmIG5leHQgPT09ICcvJykge1xuICAgICAgICByZXN1bHQgKz0gbmV4dFxuICAgICAgICBpbkJsb2NrQ29tbWVudCA9IGZhbHNlXG4gICAgICAgIGkgKz0gMlxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaSArPSAxXG4gICAgICB9XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBzaW5nbGUtcXVvdGVkIHN0cmluZ3MsIHByZXNlcnZpbmcgY29udGVudCB2ZXJiYXRpbS5cbiAgICBpZiAoaW5TaW5nbGVRdW90ZSkge1xuICAgICAgcmVzdWx0ICs9IGNoYXJcbiAgICAgIGlmIChjaGFyID09PSBcIidcIiAmJiBuZXh0ID09PSBcIidcIikge1xuICAgICAgICAvLyBFc2NhcGVkIHNpbmdsZSBxdW90ZTogY29uc3VtZSBib3RoIHF1b3Rlcy5cbiAgICAgICAgcmVzdWx0ICs9IG5leHRcbiAgICAgICAgaSArPSAyXG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIGluU2luZ2xlUXVvdGUgPSBmYWxzZVxuICAgICAgICBpICs9IDFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkgKz0gMVxuICAgICAgfVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgZG91YmxlLXF1b3RlZCBpZGVudGlmaWVycy9zdHJpbmdzLlxuICAgIGlmIChpbkRvdWJsZVF1b3RlKSB7XG4gICAgICByZXN1bHQgKz0gY2hhclxuICAgICAgaWYgKGNoYXIgPT09ICdcIicgJiYgbmV4dCA9PT0gJ1wiJykge1xuICAgICAgICAvLyBFc2NhcGVkIGRvdWJsZSBxdW90ZTogY29uc3VtZSBib3RoIHF1b3Rlcy5cbiAgICAgICAgcmVzdWx0ICs9IG5leHRcbiAgICAgICAgaSArPSAyXG4gICAgICB9IGVsc2UgaWYgKGNoYXIgPT09ICdcIicpIHtcbiAgICAgICAgaW5Eb3VibGVRdW90ZSA9IGZhbHNlXG4gICAgICAgIGkgKz0gMVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaSArPSAxXG4gICAgICB9XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBiYWNrdGljay1xdW90ZWQgaWRlbnRpZmllcnMuXG4gICAgaWYgKGluQmFja3RpY2spIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyXG4gICAgICBpZiAoY2hhciA9PT0gJ2AnICYmIG5leHQgPT09ICdgJykge1xuICAgICAgICAvLyBFc2NhcGVkIGJhY2t0aWNrOiBjb25zdW1lIGJvdGggYmFja3RpY2tzLlxuICAgICAgICByZXN1bHQgKz0gbmV4dFxuICAgICAgICBpICs9IDJcbiAgICAgIH0gZWxzZSBpZiAoY2hhciA9PT0gJ2AnKSB7XG4gICAgICAgIGluQmFja3RpY2sgPSBmYWxzZVxuICAgICAgICBpICs9IDFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkgKz0gMVxuICAgICAgfVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBXZSBhcmUgbm90IGN1cnJlbnRseSBpbnNpZGUgYSBzdHJpbmcgb3IgY29tbWVudC5cbiAgICAvLyBDaGVjayBmb3Igc3RhcnQgb2YgY29tbWVudHMgZmlyc3QuXG4gICAgaWYgKGNoYXIgPT09ICctJyAmJiBuZXh0ID09PSAnLScpIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyICsgbmV4dFxuICAgICAgaW5MaW5lQ29tbWVudCA9IHRydWVcbiAgICAgIGkgKz0gMlxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBpZiAoY2hhciA9PT0gJy8nICYmIG5leHQgPT09ICcqJykge1xuICAgICAgcmVzdWx0ICs9IGNoYXIgKyBuZXh0XG4gICAgICBpbkJsb2NrQ29tbWVudCA9IHRydWVcbiAgICAgIGkgKz0gMlxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3Igc3RhcnQgb2Ygc3RyaW5ncyAvIHF1b3RlZCBpZGVudGlmaWVycy5cbiAgICBpZiAoY2hhciA9PT0gXCInXCIpIHtcbiAgICAgIHJlc3VsdCArPSBjaGFyXG4gICAgICBpblNpbmdsZVF1b3RlID0gdHJ1ZVxuICAgICAgaSArPSAxXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChjaGFyID09PSAnXCInKSB7XG4gICAgICByZXN1bHQgKz0gY2hhclxuICAgICAgaW5Eb3VibGVRdW90ZSA9IHRydWVcbiAgICAgIGkgKz0gMVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBpZiAoY2hhciA9PT0gJ2AnKSB7XG4gICAgICByZXN1bHQgKz0gY2hhclxuICAgICAgaW5CYWNrdGljayA9IHRydWVcbiAgICAgIGkgKz0gMVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBQZXJmb3JtIFticmFja2V0XSDihpIgYGJhY2t0aWNrYCByZXBsYWNlbWVudCBvbmx5IG91dHNpZGUgbGl0ZXJhbHMvY29tbWVudHMuXG4gICAgLy8gSGFuZGxlIF1dIGFzIGVzY2FwZWQgXSBpbnNpZGUgYnJhY2tldC1xdW90ZWQgaWRlbnRpZmllcnMgKGxpa2UgJycgaW4gc3RyaW5ncykuXG4gICAgaWYgKGNoYXIgPT09ICdbJykge1xuICAgICAgbGV0IGlubmVyID0gJydcbiAgICAgIGxldCBqID0gaSArIDFcbiAgICAgIGxldCBjbG9zZWQgPSBmYWxzZVxuICAgICAgd2hpbGUgKGogPCBxdWVyeS5sZW5ndGgpIHtcbiAgICAgICAgaWYgKHF1ZXJ5W2pdID09PSAnXScpIHtcbiAgICAgICAgICBpZiAoaiArIDEgPCBxdWVyeS5sZW5ndGggJiYgcXVlcnlbaiArIDFdID09PSAnXScpIHtcbiAgICAgICAgICAgIC8vIEVzY2FwZWQgXV0g4oaSIGxpdGVyYWwgXVxuICAgICAgICAgICAgaW5uZXIgKz0gJ10nXG4gICAgICAgICAgICBqICs9IDJcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2xvc2luZyBicmFja2V0XG4gICAgICAgICAgICBjbG9zZWQgPSB0cnVlXG4gICAgICAgICAgICBqICs9IDFcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlubmVyICs9IHF1ZXJ5W2pdXG4gICAgICAgICAgaiArPSAxXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjbG9zZWQpIHtcbiAgICAgICAgcmVzdWx0ICs9ICdgJyArIGlubmVyICsgJ2AnXG4gICAgICAgIGkgPSBqXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICAvLyBObyBtYXRjaGluZyAnXScgZm91bmQg4oCUIHRyZWF0IGFzIGEgbm9ybWFsIGNoYXJhY3Rlci5cbiAgICAgIHJlc3VsdCArPSBjaGFyXG4gICAgICBpICs9IDFcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdDogY29weSBjaGFyYWN0ZXIgYXMtaXMuXG4gICAgcmVzdWx0ICs9IGNoYXJcbiAgICBpICs9IDFcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqIEJ1aWxkIGEganNvbl9leHRyYWN0KGRhdGEsIHBhdGgpIEFTVCBmdW5jdGlvbi1jYWxsIG5vZGUuICovXG5mdW5jdGlvbiBtYWtlSnNvbkV4dHJhY3ROb2RlKHBhdGg6IHN0cmluZyk6IG9iamVjdCB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ2Z1bmN0aW9uJyxcbiAgICBuYW1lOiB7IG5hbWU6IFt7IHR5cGU6ICdkZWZhdWx0JywgdmFsdWU6ICdqc29uX2V4dHJhY3QnIH1dIH0sXG4gICAgYXJnczoge1xuICAgICAgdHlwZTogJ2V4cHJfbGlzdCcsXG4gICAgICB2YWx1ZTogW1xuICAgICAgICB7IHR5cGU6ICdjb2x1bW5fcmVmJywgdGFibGU6IG51bGwsIGNvbHVtbjogJ2RhdGEnLCBjb2xsYXRlOiBudWxsIH0sXG4gICAgICAgIHsgdHlwZTogJ3NpbmdsZV9xdW90ZV9zdHJpbmcnLCB2YWx1ZTogcGF0aCB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIG92ZXI6IG51bGwsXG4gIH1cbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSB3YWxrIGFuIEFTVCBub2RlIHRyZWUsIHJlcGxhY2luZyBiYXJlIGAnJC5wYXRoJ2Agc3RyaW5nLWxpdGVyYWxcbiAqIG5vZGVzIHdpdGgganNvbl9leHRyYWN0IGZ1bmN0aW9uLWNhbGwgbm9kZXMuIEV4aXN0aW5nIGpzb25fZXh0cmFjdCBjYWxscyBhcmVcbiAqIGxlZnQgdW50b3VjaGVkIHNvIHNob3J0aGFuZCBpcyBuZXZlciBkb3VibGUtZXhwYW5kZWQuXG4gKi9cbmZ1bmN0aW9uIGV4cGFuZFNob3J0aGFuZEluQXN0KG5vZGU6IHVua25vd24pOiB1bmtub3duIHtcbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgdHlwZW9mIG5vZGUgIT09ICdvYmplY3QnKSByZXR1cm4gbm9kZVxuXG4gIGNvbnN0IG9iaiA9IG5vZGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuICAvLyBCYXJlIHNob3J0aGFuZDogc2luZ2xlX3F1b3RlX3N0cmluZyB3aG9zZSB2YWx1ZSBzdGFydHMgd2l0aCAnJC4nXG4gIGlmIChcbiAgICBvYmoudHlwZSA9PT0gJ3NpbmdsZV9xdW90ZV9zdHJpbmcnICYmXG4gICAgdHlwZW9mIG9iai52YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICBvYmoudmFsdWUuc3RhcnRzV2l0aCgnJC4nKVxuICApIHtcbiAgICByZXR1cm4gbWFrZUpzb25FeHRyYWN0Tm9kZShvYmoudmFsdWUpXG4gIH1cblxuICAvLyBTa2lwIGFyZ3Mgb2YgZXhpc3RpbmcganNvbl9leHRyYWN0IGNhbGxzIOKAlCB0aGV5IGFyZSBhbHJlYWR5IGV4cGFuZGVkLlxuICBpZiAob2JqLnR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zdCBuYW1lQXJyID0gKG9iai5uYW1lIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ubmFtZSBhc1xuICAgICAgfCBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj5cbiAgICAgIHwgdW5kZWZpbmVkXG4gICAgaWYgKG5hbWVBcnI/LlswXT8udmFsdWUgPT09ICdqc29uX2V4dHJhY3QnKSByZXR1cm4gbm9kZVxuICB9XG5cbiAgLy8gUmVjdXJzZSBpbnRvIGFsbCBjaGlsZCBwcm9wZXJ0aWVzLlxuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge31cbiAgZm9yIChjb25zdCBba2V5LCB2YWxdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICByZXN1bHRba2V5XSA9IEFycmF5LmlzQXJyYXkodmFsKSA/IHZhbC5tYXAoZXhwYW5kU2hvcnRoYW5kSW5Bc3QpIDogZXhwYW5kU2hvcnRoYW5kSW5Bc3QodmFsKVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBMb3dlcmNhc2Ugbm9uLWxpdGVyYWwgY29udGVudCBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uLlxuICogU2luZ2xlLXF1b3RlZCBzdHJpbmcgbGl0ZXJhbHMgYXJlIHByZXNlcnZlZCB2ZXJiYXRpbS5cbiAqL1xuZnVuY3Rpb24gbG93ZXJjYXNlSWRlbnRpZmllcnMocXVlcnk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzID0gcXVlcnkuc3BsaXQoLyhcXCcoPzpbXlxcJ118XFwnXFwnKSpcXCcpL2cpXG4gIHJldHVybiBwYXJ0cy5tYXAoKHBhcnQsIGkpID0+IChpICUgMiA9PT0gMCA/IHBhcnQudG9Mb3dlckNhc2UoKSA6IHBhcnQpKS5qb2luKCcnKVxufVxuXG4vKipcbiAqIE5vcm1hbGl6ZSBhIFNRTCBxdWVyeSB0byBhIGNhbm9uaWNhbCwgcmV1c2FibGUgZm9ybS5cbiAqXG4gKiBBcHBsaWVzIHRoZSBmb2xsb3dpbmcgdHJhbnNmb3JtYXRpb25zOlxuICogMS4gQ29udmVydCBgW2JyYWNrZXRdYCBpZGVudGlmaWVycyB0byBiYWNrdGljayBmb3IgcGFyc2VyIGlucHV0XG4gKiAyLiBQYXJzZSB3aXRoIHRoZSBTUUxpdGUgZ3JhbW1hciAoc3RyaXBzIGNvbW1lbnRzLCB2YWxpZGF0ZXMgc3RydWN0dXJlKVxuICogMy4gRXhwYW5kIGAnJC5wYXRoJ2Agc2hvcnRoYW5kIHRvIGBqc29uX2V4dHJhY3QoZGF0YSwgJyQucGF0aCcpYCB2aWEgQVNUIHdhbGtcbiAqIDQuIFJlLWVtaXQgd2l0aCBUcmFuc2FjdFNRTCBicmFja2V0IHF1b3Rpbmcg4oCUIGFsbCBpZGVudGlmaWVycyBiZWNvbWUgYFtuYW1lXWBcbiAqICAgIGFuZCBTUUwga2V5d29yZHMgYXJlIHVwcGVyY2FzZWRcbiAqXG4gKiBUaGUgcmVzdWx0IGlzIHZhbGlkIFNRTCBzdWl0YWJsZSBmb3IgcmV1c2UuIFVzZSBgcXVlcmllc0VxdWl2YWxlbnRgIGZvclxuICogY2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uLlxuICpcbiAqIEBwYXJhbSBxdWVyeSAtIFNRTCBxdWVyeSB0byBub3JtYWxpemVcbiAqIEByZXR1cm5zIENhbm9uaWNhbCBmb3JtIG9mIHRoZSBxdWVyeVxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplUXVlcnkocXVlcnk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHByZXByb2Nlc3NlZDogc3RyaW5nID0gYnJhY2tldHNUb0JhY2t0aWNrcyhxdWVyeSlcbiAgY29uc3QgYXN0OiBBU1QgfCBBU1RbXSA9IHNxbFBhcnNlci5hc3RpZnkocHJlcHJvY2Vzc2VkLCBTUUxJVEVfT1BUKVxuICBjb25zdCB0cmFuc2Zvcm1lZCA9IEFycmF5LmlzQXJyYXkoYXN0KSA/IGFzdC5tYXAoZXhwYW5kU2hvcnRoYW5kSW5Bc3QpIDogZXhwYW5kU2hvcnRoYW5kSW5Bc3QoYXN0KVxuICByZXR1cm4gc3FsUGFyc2VyLnNxbGlmeSh0cmFuc2Zvcm1lZCBhcyBBU1QgfCBBU1RbXSwgVFNRTF9PUFQpXG59XG5cbi8qKlxuICogQ29tcGFyZSB0d28gU1FMIHF1ZXJpZXMgZm9yIHNlbWFudGljIGVxdWl2YWxlbmNlLlxuICpcbiAqIElnbm9yZXMgZGlmZmVyZW5jZXMgaW4gd2hpdGVzcGFjZSwga2V5d29yZCBjYXNlLCBpZGVudGlmaWVyIGNhc2UsIHNxdWFyZVxuICogYnJhY2tldCBxdW90aW5nLCBhbmQgdGhlIGAnJC5wYXRoJ2AganNvbl9leHRyYWN0IHNob3J0aGFuZC4gU3RyaW5nIGxpdGVyYWxcbiAqIHZhbHVlcyBhcmUgY2FzZS1zZW5zaXRpdmUgKGAnQWN0aXZlJ2Ag4omgIGAnYWN0aXZlJ2ApLlxuICpcbiAqIEBwYXJhbSBhIC0gRmlyc3QgU1FMIHF1ZXJ5XG4gKiBAcGFyYW0gYiAtIFNlY29uZCBTUUwgcXVlcnlcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHF1ZXJpZXMgYXJlIHNlbWFudGljYWxseSBlcXVpdmFsZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBxdWVyaWVzRXF1aXZhbGVudChhOiBzdHJpbmcsIGI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gbG93ZXJjYXNlSWRlbnRpZmllcnMobm9ybWFsaXplUXVlcnkoYSkpID09PSBsb3dlcmNhc2VJZGVudGlmaWVycyhub3JtYWxpemVRdWVyeShiKSlcbn1cbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-normalizer.d.ts","sourceRoot":"","sources":["../../src/datasource/sqlite-normalizer.ts"],"names":[],"mappings":"AA+PA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKpD;AAaD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAE/D","sourcesContent":["import { type AST } from 'node-sql-parser'\nimport SqliteParser from 'node-sql-parser/build/sqlite.js'\n\nconst SqlParserClass = SqliteParser.Parser\n\n// Use SQLite grammar for parsing; output with TransactSQL bracket quoting.\n// The SQLite build does not accept [bracket] quoting as input, so we pre-process\n// [foo] → `foo` (backtick), which the SQLite grammar accepts and normalizes to \"foo\".\n// sqlify with TransactSQL opts then re-emits all identifiers as [foo].\nconst SQLITE_OPT = { database: 'SQLite' }\nconst TSQL_OPT = { database: 'TransactSQL' }\nconst sqlParser = new SqlParserClass()\n\n/** Convert [bracket] identifiers to backtick so the SQLite parser accepts them. */\nfunction bracketsToBackticks(query: string): string {\n let result = ''\n let i = 0\n\n let inSingleQuote = false\n let inDoubleQuote = false\n let inBacktick = false\n let inLineComment = false\n let inBlockComment = false\n\n while (i < query.length) {\n const char = query[i]\n const next = i + 1 < query.length ? query[i + 1] : ''\n\n // Handle end of line comment\n if (inLineComment) {\n result += char\n if (char === '\\n') {\n inLineComment = false\n }\n i += 1\n continue\n }\n\n // Handle end of block comment\n if (inBlockComment) {\n result += char\n if (char === '*' && next === '/') {\n result += next\n inBlockComment = false\n i += 2\n } else {\n i += 1\n }\n continue\n }\n\n // Handle single-quoted strings, preserving content verbatim.\n if (inSingleQuote) {\n result += char\n if (char === \"'\" && next === \"'\") {\n // Escaped single quote: consume both quotes.\n result += next\n i += 2\n } else if (char === \"'\") {\n inSingleQuote = false\n i += 1\n } else {\n i += 1\n }\n continue\n }\n\n // Handle double-quoted identifiers/strings.\n if (inDoubleQuote) {\n result += char\n if (char === '\"' && next === '\"') {\n // Escaped double quote: consume both quotes.\n result += next\n i += 2\n } else if (char === '\"') {\n inDoubleQuote = false\n i += 1\n } else {\n i += 1\n }\n continue\n }\n\n // Handle backtick-quoted identifiers.\n if (inBacktick) {\n result += char\n if (char === '`' && next === '`') {\n // Escaped backtick: consume both backticks.\n result += next\n i += 2\n } else if (char === '`') {\n inBacktick = false\n i += 1\n } else {\n i += 1\n }\n continue\n }\n\n // We are not currently inside a string or comment.\n // Check for start of comments first.\n if (char === '-' && next === '-') {\n result += char + next\n inLineComment = true\n i += 2\n continue\n }\n\n if (char === '/' && next === '*') {\n result += char + next\n inBlockComment = true\n i += 2\n continue\n }\n\n // Check for start of strings / quoted identifiers.\n if (char === \"'\") {\n result += char\n inSingleQuote = true\n i += 1\n continue\n }\n\n if (char === '\"') {\n result += char\n inDoubleQuote = true\n i += 1\n continue\n }\n\n if (char === '`') {\n result += char\n inBacktick = true\n i += 1\n continue\n }\n\n // Perform [bracket] → `backtick` replacement only outside literals/comments.\n // Handle ]] as escaped ] inside bracket-quoted identifiers (like '' in strings).\n if (char === '[') {\n let inner = ''\n let j = i + 1\n let closed = false\n while (j < query.length) {\n if (query[j] === ']') {\n if (j + 1 < query.length && query[j + 1] === ']') {\n // Escaped ]] → literal ]\n inner += ']'\n j += 2\n } else {\n // Closing bracket\n closed = true\n j += 1\n break\n }\n } else {\n inner += query[j]\n j += 1\n }\n }\n if (closed) {\n result += '`' + inner + '`'\n i = j\n continue\n }\n // No matching ']' found — treat as a normal character.\n result += char\n i += 1\n continue\n }\n\n // Default: copy character as-is.\n result += char\n i += 1\n }\n\n return result\n}\n\n/** Build a json_extract(data, path) AST function-call node. */\nfunction makeJsonExtractNode(path: string): object {\n return {\n type: 'function',\n name: { name: [{ type: 'default', value: 'json_extract' }] },\n args: {\n type: 'expr_list',\n value: [\n { type: 'column_ref', table: null, column: 'data', collate: null },\n { type: 'single_quote_string', value: path },\n ],\n },\n over: null,\n }\n}\n\n/**\n * Recursively walk an AST node tree, replacing bare `'$.path'` string-literal\n * nodes with json_extract function-call nodes. Existing json_extract calls are\n * left untouched so shorthand is never double-expanded.\n */\nfunction expandShorthandInAst(node: unknown): unknown {\n if (node === null || typeof node !== 'object') return node\n\n const obj = node as Record<string, unknown>\n\n // Bare shorthand: single_quote_string whose value starts with '$.'\n if (\n obj.type === 'single_quote_string' &&\n typeof obj.value === 'string' &&\n obj.value.startsWith('$.')\n ) {\n return makeJsonExtractNode(obj.value)\n }\n\n // Skip args of existing json_extract calls — they are already expanded.\n if (obj.type === 'function') {\n const nameArr = (obj.name as Record<string, unknown>)?.name as\n | Array<Record<string, unknown>>\n | undefined\n if (nameArr?.[0]?.value === 'json_extract') return node\n }\n\n // Recurse into all child properties.\n const result: Record<string, unknown> = {}\n for (const [key, val] of Object.entries(obj)) {\n result[key] = Array.isArray(val) ? val.map(expandShorthandInAst) : expandShorthandInAst(val)\n }\n return result\n}\n\n/**\n * Lowercase non-literal content for case-insensitive comparison.\n * Single-quoted string literals are preserved verbatim.\n */\nfunction lowercaseIdentifiers(query: string): string {\n const parts = query.split(/(\\'(?:[^\\']|\\'\\')*\\')/g)\n return parts.map((part, i) => (i % 2 === 0 ? part.toLowerCase() : part)).join('')\n}\n\n/**\n * Normalize a SQL query to a canonical, reusable form.\n *\n * Applies the following transformations:\n * 1. Convert `[bracket]` identifiers to backtick for parser input\n * 2. Parse with the SQLite grammar (strips comments, validates structure)\n * 3. Expand `'$.path'` shorthand to `json_extract(data, '$.path')` via AST walk\n * 4. Re-emit with TransactSQL bracket quoting — all identifiers become `[name]`\n * and SQL keywords are uppercased\n *\n * The result is valid SQL suitable for reuse. Use `queriesEquivalent` for\n * case-insensitive comparison.\n *\n * @param query - SQL query to normalize\n * @returns Canonical form of the query\n */\nexport function normalizeQuery(query: string): string {\n const preprocessed: string = bracketsToBackticks(query)\n const ast: AST | AST[] = sqlParser.astify(preprocessed, SQLITE_OPT)\n const transformed = Array.isArray(ast) ? ast.map(expandShorthandInAst) : expandShorthandInAst(ast)\n return sqlParser.sqlify(transformed as AST | AST[], TSQL_OPT)\n}\n\n/**\n * Compare two SQL queries for semantic equivalence.\n *\n * Ignores differences in whitespace, keyword case, identifier case, square\n * bracket quoting, and the `'$.path'` json_extract shorthand. String literal\n * values are case-sensitive (`'Active'` ≠ `'active'`).\n *\n * @param a - First SQL query\n * @param b - Second SQL query\n * @returns true if the queries are semantically equivalent\n */\nexport function queriesEquivalent(a: string, b: string): boolean {\n return lowercaseIdentifiers(normalizeQuery(a)) === lowercaseIdentifiers(normalizeQuery(b))\n}\n"]}
|