@oracle/oraclejet-webdriver 10.0.8
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/LICENSE +21 -0
- package/README.md +16 -0
- package/bin/generate +509 -0
- package/bin/generate-jet +163 -0
- package/bin/templates/baseclass.ts-template +13 -0
- package/bin/templates/class.ts-template +12 -0
- package/bin/templates/element-test.spec.ts-template +28 -0
- package/bin/templates/index.ts-template +27 -0
- package/bin/templates/jetcomponents.json +71 -0
- package/bin/templates/package.json-template +15 -0
- package/bin/templates/tsconfig.json-template +19 -0
- package/elements/OjWebElement.js +233 -0
- package/elements/OjWebElement.js.map +1 -0
- package/elements/OjWebElement.ts +675 -0
- package/elements/index.js +214 -0
- package/elements/index.js.map +1 -0
- package/elements/index.ts +75 -0
- package/elements/oj-accordion/OjAccordion.js +8 -0
- package/elements/oj-accordion/OjAccordion.js.map +1 -0
- package/elements/oj-accordion/OjAccordion.ts +12 -0
- package/elements/oj-accordion/OjAccordionBase.js +20 -0
- package/elements/oj-accordion/OjAccordionBase.js.map +1 -0
- package/elements/oj-accordion/OjAccordionBase.ts +48 -0
- package/elements/oj-accordion/index.js +17 -0
- package/elements/oj-accordion/index.js.map +1 -0
- package/elements/oj-accordion/index.ts +27 -0
- package/elements/oj-button/OjButton.js +20 -0
- package/elements/oj-button/OjButton.js.map +1 -0
- package/elements/oj-button/OjButton.ts +35 -0
- package/elements/oj-button/OjButtonBase.js +23 -0
- package/elements/oj-button/OjButtonBase.js.map +1 -0
- package/elements/oj-button/OjButtonBase.ts +57 -0
- package/elements/oj-button/index.js +17 -0
- package/elements/oj-button/index.js.map +1 -0
- package/elements/oj-button/index.ts +27 -0
- package/elements/oj-buttonset-many/OjButtonsetMany.js +8 -0
- package/elements/oj-buttonset-many/OjButtonsetMany.js.map +1 -0
- package/elements/oj-buttonset-many/OjButtonsetMany.ts +11 -0
- package/elements/oj-buttonset-many/OjButtonsetManyBase.js +35 -0
- package/elements/oj-buttonset-many/OjButtonsetManyBase.js.map +1 -0
- package/elements/oj-buttonset-many/OjButtonsetManyBase.ts +93 -0
- package/elements/oj-buttonset-many/index.js +17 -0
- package/elements/oj-buttonset-many/index.js.map +1 -0
- package/elements/oj-buttonset-many/index.ts +27 -0
- package/elements/oj-buttonset-one/OjButtonsetOne.js +8 -0
- package/elements/oj-buttonset-one/OjButtonsetOne.js.map +1 -0
- package/elements/oj-buttonset-one/OjButtonsetOne.ts +11 -0
- package/elements/oj-buttonset-one/OjButtonsetOneBase.js +35 -0
- package/elements/oj-buttonset-one/OjButtonsetOneBase.js.map +1 -0
- package/elements/oj-buttonset-one/OjButtonsetOneBase.ts +93 -0
- package/elements/oj-buttonset-one/index.js +17 -0
- package/elements/oj-buttonset-one/index.js.map +1 -0
- package/elements/oj-buttonset-one/index.ts +27 -0
- package/elements/oj-chart/OjChart.js +8 -0
- package/elements/oj-chart/OjChart.js.map +1 -0
- package/elements/oj-chart/OjChart.ts +12 -0
- package/elements/oj-chart/OjChartBase.js +170 -0
- package/elements/oj-chart/OjChartBase.js.map +1 -0
- package/elements/oj-chart/OjChartBase.ts +2468 -0
- package/elements/oj-chart/index.js +17 -0
- package/elements/oj-chart/index.js.map +1 -0
- package/elements/oj-chart/index.ts +27 -0
- package/elements/oj-checkboxset/OjCheckboxset.js +39 -0
- package/elements/oj-checkboxset/OjCheckboxset.js.map +1 -0
- package/elements/oj-checkboxset/OjCheckboxset.ts +74 -0
- package/elements/oj-checkboxset/OjCheckboxsetBase.js +68 -0
- package/elements/oj-checkboxset/OjCheckboxsetBase.js.map +1 -0
- package/elements/oj-checkboxset/OjCheckboxsetBase.ts +262 -0
- package/elements/oj-checkboxset/index.js +17 -0
- package/elements/oj-checkboxset/index.js.map +1 -0
- package/elements/oj-checkboxset/index.ts +27 -0
- package/elements/oj-collapsible/OjCollapsible.js +23 -0
- package/elements/oj-collapsible/OjCollapsible.js.map +1 -0
- package/elements/oj-collapsible/OjCollapsible.ts +36 -0
- package/elements/oj-collapsible/OjCollapsibleBase.js +23 -0
- package/elements/oj-collapsible/OjCollapsibleBase.js.map +1 -0
- package/elements/oj-collapsible/OjCollapsibleBase.ts +57 -0
- package/elements/oj-collapsible/index.js +17 -0
- package/elements/oj-collapsible/index.js.map +1 -0
- package/elements/oj-collapsible/index.ts +27 -0
- package/elements/oj-color-palette/OjColorPalette.js +8 -0
- package/elements/oj-color-palette/OjColorPalette.js.map +1 -0
- package/elements/oj-color-palette/OjColorPalette.ts +12 -0
- package/elements/oj-color-palette/OjColorPaletteBase.js +65 -0
- package/elements/oj-color-palette/OjColorPaletteBase.js.map +1 -0
- package/elements/oj-color-palette/OjColorPaletteBase.ts +235 -0
- package/elements/oj-color-palette/index.js +17 -0
- package/elements/oj-color-palette/index.js.map +1 -0
- package/elements/oj-color-palette/index.ts +27 -0
- package/elements/oj-color-spectrum/OjColorSpectrum.js +8 -0
- package/elements/oj-color-spectrum/OjColorSpectrum.js.map +1 -0
- package/elements/oj-color-spectrum/OjColorSpectrum.ts +12 -0
- package/elements/oj-color-spectrum/OjColorSpectrumBase.js +56 -0
- package/elements/oj-color-spectrum/OjColorSpectrumBase.js.map +1 -0
- package/elements/oj-color-spectrum/OjColorSpectrumBase.ts +210 -0
- package/elements/oj-color-spectrum/index.js +17 -0
- package/elements/oj-color-spectrum/index.js.map +1 -0
- package/elements/oj-color-spectrum/index.ts +27 -0
- package/elements/oj-combobox-many/OjComboboxMany.js +51 -0
- package/elements/oj-combobox-many/OjComboboxMany.js.map +1 -0
- package/elements/oj-combobox-many/OjComboboxMany.ts +80 -0
- package/elements/oj-combobox-many/OjComboboxManyBase.js +98 -0
- package/elements/oj-combobox-many/OjComboboxManyBase.js.map +1 -0
- package/elements/oj-combobox-many/OjComboboxManyBase.ts +428 -0
- package/elements/oj-combobox-many/index.js +17 -0
- package/elements/oj-combobox-many/index.js.map +1 -0
- package/elements/oj-combobox-many/index.ts +27 -0
- package/elements/oj-combobox-one/OjComboboxOne.js +49 -0
- package/elements/oj-combobox-one/OjComboboxOne.js.map +1 -0
- package/elements/oj-combobox-one/OjComboboxOne.ts +74 -0
- package/elements/oj-combobox-one/OjComboboxOneBase.js +101 -0
- package/elements/oj-combobox-one/OjComboboxOneBase.js.map +1 -0
- package/elements/oj-combobox-one/OjComboboxOneBase.ts +437 -0
- package/elements/oj-combobox-one/index.js +17 -0
- package/elements/oj-combobox-one/index.js.map +1 -0
- package/elements/oj-combobox-one/index.ts +27 -0
- package/elements/oj-conveyor-belt/OjConveyorBelt.js +16 -0
- package/elements/oj-conveyor-belt/OjConveyorBelt.js.map +1 -0
- package/elements/oj-conveyor-belt/OjConveyorBelt.ts +30 -0
- package/elements/oj-conveyor-belt/OjConveyorBeltBase.js +29 -0
- package/elements/oj-conveyor-belt/OjConveyorBeltBase.js.map +1 -0
- package/elements/oj-conveyor-belt/OjConveyorBeltBase.ts +87 -0
- package/elements/oj-conveyor-belt/index.js +17 -0
- package/elements/oj-conveyor-belt/index.js.map +1 -0
- package/elements/oj-conveyor-belt/index.ts +27 -0
- package/elements/oj-data-grid/OjDataGrid.js +198 -0
- package/elements/oj-data-grid/OjDataGrid.js.map +1 -0
- package/elements/oj-data-grid/OjDataGrid.ts +279 -0
- package/elements/oj-data-grid/OjDataGridBase.js +65 -0
- package/elements/oj-data-grid/OjDataGridBase.js.map +1 -0
- package/elements/oj-data-grid/OjDataGridBase.ts +705 -0
- package/elements/oj-data-grid/index.js +17 -0
- package/elements/oj-data-grid/index.js.map +1 -0
- package/elements/oj-data-grid/index.ts +27 -0
- package/elements/oj-date-picker/OjDatePicker.js +8 -0
- package/elements/oj-date-picker/OjDatePicker.js.map +1 -0
- package/elements/oj-date-picker/OjDatePicker.ts +12 -0
- package/elements/oj-date-picker/OjDatePickerBase.js +104 -0
- package/elements/oj-date-picker/OjDatePickerBase.js.map +1 -0
- package/elements/oj-date-picker/OjDatePickerBase.ts +536 -0
- package/elements/oj-date-picker/index.js +17 -0
- package/elements/oj-date-picker/index.js.map +1 -0
- package/elements/oj-date-picker/index.ts +27 -0
- package/elements/oj-date-time-picker/OjDateTimePicker.js +8 -0
- package/elements/oj-date-time-picker/OjDateTimePicker.js.map +1 -0
- package/elements/oj-date-time-picker/OjDateTimePicker.ts +32 -0
- package/elements/oj-date-time-picker/OjDateTimePickerBase.js +107 -0
- package/elements/oj-date-time-picker/OjDateTimePickerBase.js.map +1 -0
- package/elements/oj-date-time-picker/OjDateTimePickerBase.ts +567 -0
- package/elements/oj-date-time-picker/index.js +17 -0
- package/elements/oj-date-time-picker/index.js.map +1 -0
- package/elements/oj-date-time-picker/index.ts +27 -0
- package/elements/oj-diagram/OjDiagram.js +8 -0
- package/elements/oj-diagram/OjDiagram.js.map +1 -0
- package/elements/oj-diagram/OjDiagram.ts +12 -0
- package/elements/oj-diagram/OjDiagramBase.js +128 -0
- package/elements/oj-diagram/OjDiagramBase.js.map +1 -0
- package/elements/oj-diagram/OjDiagramBase.ts +740 -0
- package/elements/oj-diagram/index.js +17 -0
- package/elements/oj-diagram/index.js.map +1 -0
- package/elements/oj-diagram/index.ts +27 -0
- package/elements/oj-dialog/OjDialog.js +13 -0
- package/elements/oj-dialog/OjDialog.js.map +1 -0
- package/elements/oj-dialog/OjDialog.ts +21 -0
- package/elements/oj-dialog/OjDialogBase.js +32 -0
- package/elements/oj-dialog/OjDialogBase.js.map +1 -0
- package/elements/oj-dialog/OjDialogBase.ts +144 -0
- package/elements/oj-dialog/index.js +17 -0
- package/elements/oj-dialog/index.js.map +1 -0
- package/elements/oj-dialog/index.ts +27 -0
- package/elements/oj-file-picker/OjFilePicker.js +35 -0
- package/elements/oj-file-picker/OjFilePicker.js.map +1 -0
- package/elements/oj-file-picker/OjFilePicker.ts +46 -0
- package/elements/oj-file-picker/OjFilePickerBase.js +29 -0
- package/elements/oj-file-picker/OjFilePickerBase.js.map +1 -0
- package/elements/oj-file-picker/OjFilePickerBase.ts +75 -0
- package/elements/oj-file-picker/index.js +17 -0
- package/elements/oj-file-picker/index.js.map +1 -0
- package/elements/oj-file-picker/index.ts +27 -0
- package/elements/oj-film-strip/OjFilmStrip.js +8 -0
- package/elements/oj-film-strip/OjFilmStrip.js.map +1 -0
- package/elements/oj-film-strip/OjFilmStrip.ts +12 -0
- package/elements/oj-film-strip/OjFilmStripBase.js +32 -0
- package/elements/oj-film-strip/OjFilmStripBase.js.map +1 -0
- package/elements/oj-film-strip/OjFilmStripBase.ts +118 -0
- package/elements/oj-film-strip/index.js +17 -0
- package/elements/oj-film-strip/index.js.map +1 -0
- package/elements/oj-film-strip/index.ts +27 -0
- package/elements/oj-gantt/OjGantt.js +8 -0
- package/elements/oj-gantt/OjGantt.js.map +1 -0
- package/elements/oj-gantt/OjGantt.ts +12 -0
- package/elements/oj-gantt/OjGanttBase.js +98 -0
- package/elements/oj-gantt/OjGanttBase.js.map +1 -0
- package/elements/oj-gantt/OjGanttBase.ts +996 -0
- package/elements/oj-gantt/index.js +17 -0
- package/elements/oj-gantt/index.js.map +1 -0
- package/elements/oj-gantt/index.ts +27 -0
- package/elements/oj-indexer/OjIndexer.js +8 -0
- package/elements/oj-indexer/OjIndexer.js.map +1 -0
- package/elements/oj-indexer/OjIndexer.ts +12 -0
- package/elements/oj-indexer/OjIndexerBase.js +14 -0
- package/elements/oj-indexer/OjIndexerBase.js.map +1 -0
- package/elements/oj-indexer/OjIndexerBase.ts +62 -0
- package/elements/oj-indexer/index.js +17 -0
- package/elements/oj-indexer/index.js.map +1 -0
- package/elements/oj-indexer/index.ts +27 -0
- package/elements/oj-input-date/OjInputDate.js +10 -0
- package/elements/oj-input-date/OjInputDate.js.map +1 -0
- package/elements/oj-input-date/OjInputDate.ts +14 -0
- package/elements/oj-input-date/OjInputDateBase.js +107 -0
- package/elements/oj-input-date/OjInputDateBase.js.map +1 -0
- package/elements/oj-input-date/OjInputDateBase.ts +545 -0
- package/elements/oj-input-date/index.js +17 -0
- package/elements/oj-input-date/index.js.map +1 -0
- package/elements/oj-input-date/index.ts +27 -0
- package/elements/oj-input-date-time/OjInputDateTime.js +10 -0
- package/elements/oj-input-date-time/OjInputDateTime.js.map +1 -0
- package/elements/oj-input-date-time/OjInputDateTime.ts +14 -0
- package/elements/oj-input-date-time/OjInputDateTimeBase.js +110 -0
- package/elements/oj-input-date-time/OjInputDateTimeBase.js.map +1 -0
- package/elements/oj-input-date-time/OjInputDateTimeBase.ts +576 -0
- package/elements/oj-input-date-time/index.js +17 -0
- package/elements/oj-input-date-time/index.js.map +1 -0
- package/elements/oj-input-date-time/index.ts +27 -0
- package/elements/oj-input-number/OjInputNumber.js +10 -0
- package/elements/oj-input-number/OjInputNumber.js.map +1 -0
- package/elements/oj-input-number/OjInputNumber.ts +14 -0
- package/elements/oj-input-number/OjInputNumberBase.js +98 -0
- package/elements/oj-input-number/OjInputNumberBase.js.map +1 -0
- package/elements/oj-input-number/OjInputNumberBase.ts +406 -0
- package/elements/oj-input-number/index.js +17 -0
- package/elements/oj-input-number/index.js.map +1 -0
- package/elements/oj-input-number/index.ts +27 -0
- package/elements/oj-input-password/OjInputPassword.js +10 -0
- package/elements/oj-input-password/OjInputPassword.js.map +1 -0
- package/elements/oj-input-password/OjInputPassword.ts +14 -0
- package/elements/oj-input-password/OjInputPasswordBase.js +83 -0
- package/elements/oj-input-password/OjInputPasswordBase.js.map +1 -0
- package/elements/oj-input-password/OjInputPasswordBase.ts +323 -0
- package/elements/oj-input-password/index.js +17 -0
- package/elements/oj-input-password/index.js.map +1 -0
- package/elements/oj-input-password/index.ts +27 -0
- package/elements/oj-input-search/OjInputSearch.js +41 -0
- package/elements/oj-input-search/OjInputSearch.js.map +1 -0
- package/elements/oj-input-search/OjInputSearch.ts +64 -0
- package/elements/oj-input-search/OjInputSearchBase.js +26 -0
- package/elements/oj-input-search/OjInputSearchBase.js.map +1 -0
- package/elements/oj-input-search/OjInputSearchBase.ts +66 -0
- package/elements/oj-input-search/index.js +17 -0
- package/elements/oj-input-search/index.js.map +1 -0
- package/elements/oj-input-search/index.ts +27 -0
- package/elements/oj-input-text/OjInputText.js +10 -0
- package/elements/oj-input-text/OjInputText.js.map +1 -0
- package/elements/oj-input-text/OjInputText.ts +15 -0
- package/elements/oj-input-text/OjInputTextBase.js +95 -0
- package/elements/oj-input-text/OjInputTextBase.js.map +1 -0
- package/elements/oj-input-text/OjInputTextBase.ts +361 -0
- package/elements/oj-input-text/index.js +17 -0
- package/elements/oj-input-text/index.js.map +1 -0
- package/elements/oj-input-text/index.ts +27 -0
- package/elements/oj-input-time/OjInputTime.js +10 -0
- package/elements/oj-input-time/OjInputTime.js.map +1 -0
- package/elements/oj-input-time/OjInputTime.ts +14 -0
- package/elements/oj-input-time/OjInputTimeBase.js +101 -0
- package/elements/oj-input-time/OjInputTimeBase.js.map +1 -0
- package/elements/oj-input-time/OjInputTimeBase.ts +477 -0
- package/elements/oj-input-time/index.js +17 -0
- package/elements/oj-input-time/index.js.map +1 -0
- package/elements/oj-input-time/index.ts +27 -0
- package/elements/oj-label/OjLabel.js +8 -0
- package/elements/oj-label/OjLabel.js.map +1 -0
- package/elements/oj-label/OjLabel.ts +12 -0
- package/elements/oj-label/OjLabelBase.js +23 -0
- package/elements/oj-label/OjLabelBase.js.map +1 -0
- package/elements/oj-label/OjLabelBase.ts +79 -0
- package/elements/oj-label/index.js +17 -0
- package/elements/oj-label/index.js.map +1 -0
- package/elements/oj-label/index.ts +27 -0
- package/elements/oj-led-gauge/OjLedGauge.js +8 -0
- package/elements/oj-led-gauge/OjLedGauge.js.map +1 -0
- package/elements/oj-led-gauge/OjLedGauge.ts +12 -0
- package/elements/oj-led-gauge/OjLedGaugeBase.js +62 -0
- package/elements/oj-led-gauge/OjLedGaugeBase.js.map +1 -0
- package/elements/oj-led-gauge/OjLedGaugeBase.ts +302 -0
- package/elements/oj-led-gauge/index.js +17 -0
- package/elements/oj-led-gauge/index.js.map +1 -0
- package/elements/oj-led-gauge/index.ts +27 -0
- package/elements/oj-legend/OjLegend.js +8 -0
- package/elements/oj-legend/OjLegend.js.map +1 -0
- package/elements/oj-legend/OjLegend.ts +12 -0
- package/elements/oj-legend/OjLegendBase.js +74 -0
- package/elements/oj-legend/OjLegendBase.js.map +1 -0
- package/elements/oj-legend/OjLegendBase.ts +324 -0
- package/elements/oj-legend/index.js +17 -0
- package/elements/oj-legend/index.js.map +1 -0
- package/elements/oj-legend/index.ts +27 -0
- package/elements/oj-list-view/OjListView.js +25 -0
- package/elements/oj-list-view/OjListView.js.map +1 -0
- package/elements/oj-list-view/OjListView.ts +36 -0
- package/elements/oj-list-view/OjListViewBase.js +71 -0
- package/elements/oj-list-view/OjListViewBase.js.map +1 -0
- package/elements/oj-list-view/OjListViewBase.ts +355 -0
- package/elements/oj-list-view/index.js +17 -0
- package/elements/oj-list-view/index.js.map +1 -0
- package/elements/oj-list-view/index.ts +27 -0
- package/elements/oj-masonry-layout/OjMasonryLayout.js +8 -0
- package/elements/oj-masonry-layout/OjMasonryLayout.js.map +1 -0
- package/elements/oj-masonry-layout/OjMasonryLayout.ts +12 -0
- package/elements/oj-masonry-layout/OjMasonryLayoutBase.js +14 -0
- package/elements/oj-masonry-layout/OjMasonryLayoutBase.js.map +1 -0
- package/elements/oj-masonry-layout/OjMasonryLayoutBase.ts +46 -0
- package/elements/oj-masonry-layout/index.js +17 -0
- package/elements/oj-masonry-layout/index.js.map +1 -0
- package/elements/oj-masonry-layout/index.ts +27 -0
- package/elements/oj-menu/OjMenu.js +28 -0
- package/elements/oj-menu/OjMenu.js.map +1 -0
- package/elements/oj-menu/OjMenu.ts +42 -0
- package/elements/oj-menu/OjMenuBase.js +17 -0
- package/elements/oj-menu/OjMenuBase.js.map +1 -0
- package/elements/oj-menu/OjMenuBase.ts +121 -0
- package/elements/oj-menu/index.js +17 -0
- package/elements/oj-menu/index.js.map +1 -0
- package/elements/oj-menu/index.ts +27 -0
- package/elements/oj-menu-button/OjMenuButton.js +14 -0
- package/elements/oj-menu-button/OjMenuButton.js.map +1 -0
- package/elements/oj-menu-button/OjMenuButton.ts +20 -0
- package/elements/oj-menu-button/OjMenuButtonBase.js +20 -0
- package/elements/oj-menu-button/OjMenuButtonBase.js.map +1 -0
- package/elements/oj-menu-button/OjMenuButtonBase.ts +48 -0
- package/elements/oj-menu-button/index.js +17 -0
- package/elements/oj-menu-button/index.js.map +1 -0
- package/elements/oj-menu-button/index.ts +27 -0
- package/elements/oj-message/OjMessage.js +13 -0
- package/elements/oj-message/OjMessage.js.map +1 -0
- package/elements/oj-message/OjMessage.ts +19 -0
- package/elements/oj-message/OjMessageBase.js +17 -0
- package/elements/oj-message/OjMessageBase.js.map +1 -0
- package/elements/oj-message/OjMessageBase.ts +113 -0
- package/elements/oj-message/index.js +17 -0
- package/elements/oj-message/index.js.map +1 -0
- package/elements/oj-message/index.ts +27 -0
- package/elements/oj-n-box/OjNBox.js +8 -0
- package/elements/oj-n-box/OjNBox.js.map +1 -0
- package/elements/oj-n-box/OjNBox.ts +12 -0
- package/elements/oj-n-box/OjNBoxBase.js +116 -0
- package/elements/oj-n-box/OjNBoxBase.js.map +1 -0
- package/elements/oj-n-box/OjNBoxBase.ts +880 -0
- package/elements/oj-n-box/index.js +17 -0
- package/elements/oj-n-box/index.js.map +1 -0
- package/elements/oj-n-box/index.ts +27 -0
- package/elements/oj-navigation-list/OjNavigationList.js +186 -0
- package/elements/oj-navigation-list/OjNavigationList.js.map +1 -0
- package/elements/oj-navigation-list/OjNavigationList.ts +250 -0
- package/elements/oj-navigation-list/OjNavigationListBase.js +50 -0
- package/elements/oj-navigation-list/OjNavigationListBase.js.map +1 -0
- package/elements/oj-navigation-list/OjNavigationListBase.ts +164 -0
- package/elements/oj-navigation-list/index.js +17 -0
- package/elements/oj-navigation-list/index.js.map +1 -0
- package/elements/oj-navigation-list/index.ts +27 -0
- package/elements/oj-paging-control/OjPagingControl.js +13 -0
- package/elements/oj-paging-control/OjPagingControl.js.map +1 -0
- package/elements/oj-paging-control/OjPagingControl.ts +26 -0
- package/elements/oj-paging-control/OjPagingControlBase.js +29 -0
- package/elements/oj-paging-control/OjPagingControlBase.js.map +1 -0
- package/elements/oj-paging-control/OjPagingControlBase.ts +235 -0
- package/elements/oj-paging-control/index.js +17 -0
- package/elements/oj-paging-control/index.js.map +1 -0
- package/elements/oj-paging-control/index.ts +27 -0
- package/elements/oj-picto-chart/OjPictoChart.js +8 -0
- package/elements/oj-picto-chart/OjPictoChart.js.map +1 -0
- package/elements/oj-picto-chart/OjPictoChart.ts +12 -0
- package/elements/oj-picto-chart/OjPictoChartBase.js +86 -0
- package/elements/oj-picto-chart/OjPictoChartBase.js.map +1 -0
- package/elements/oj-picto-chart/OjPictoChartBase.ts +394 -0
- package/elements/oj-picto-chart/index.js +17 -0
- package/elements/oj-picto-chart/index.js.map +1 -0
- package/elements/oj-picto-chart/index.ts +27 -0
- package/elements/oj-popup/OjPopup.js +8 -0
- package/elements/oj-popup/OjPopup.js.map +1 -0
- package/elements/oj-popup/OjPopup.ts +11 -0
- package/elements/oj-popup/OjPopupBase.js +29 -0
- package/elements/oj-popup/OjPopupBase.js.map +1 -0
- package/elements/oj-popup/OjPopupBase.ts +155 -0
- package/elements/oj-popup/index.js +17 -0
- package/elements/oj-popup/index.js.map +1 -0
- package/elements/oj-popup/index.ts +27 -0
- package/elements/oj-progress/OjProgress.js +8 -0
- package/elements/oj-progress/OjProgress.js.map +1 -0
- package/elements/oj-progress/OjProgress.ts +12 -0
- package/elements/oj-progress/OjProgressBase.js +23 -0
- package/elements/oj-progress/OjProgressBase.js.map +1 -0
- package/elements/oj-progress/OjProgressBase.ts +65 -0
- package/elements/oj-progress/index.js +17 -0
- package/elements/oj-progress/index.js.map +1 -0
- package/elements/oj-progress/index.ts +27 -0
- package/elements/oj-progress-list/OjProgressList.js +8 -0
- package/elements/oj-progress-list/OjProgressList.js.map +1 -0
- package/elements/oj-progress-list/OjProgressList.ts +12 -0
- package/elements/oj-progress-list/OjProgressListBase.js +11 -0
- package/elements/oj-progress-list/OjProgressListBase.js.map +1 -0
- package/elements/oj-progress-list/OjProgressListBase.ts +21 -0
- package/elements/oj-progress-list/index.js +17 -0
- package/elements/oj-progress-list/index.js.map +1 -0
- package/elements/oj-progress-list/index.ts +27 -0
- package/elements/oj-radioset/OjRadioset.js +32 -0
- package/elements/oj-radioset/OjRadioset.js.map +1 -0
- package/elements/oj-radioset/OjRadioset.ts +63 -0
- package/elements/oj-radioset/OjRadiosetBase.js +68 -0
- package/elements/oj-radioset/OjRadiosetBase.js.map +1 -0
- package/elements/oj-radioset/OjRadiosetBase.ts +262 -0
- package/elements/oj-radioset/index.js +17 -0
- package/elements/oj-radioset/index.js.map +1 -0
- package/elements/oj-radioset/index.ts +27 -0
- package/elements/oj-rating-gauge/OjRatingGauge.js +8 -0
- package/elements/oj-rating-gauge/OjRatingGauge.js.map +1 -0
- package/elements/oj-rating-gauge/OjRatingGauge.ts +12 -0
- package/elements/oj-rating-gauge/OjRatingGaugeBase.js +80 -0
- package/elements/oj-rating-gauge/OjRatingGaugeBase.js.map +1 -0
- package/elements/oj-rating-gauge/OjRatingGaugeBase.ts +424 -0
- package/elements/oj-rating-gauge/index.js +17 -0
- package/elements/oj-rating-gauge/index.js.map +1 -0
- package/elements/oj-rating-gauge/index.ts +27 -0
- package/elements/oj-refresher/OjRefresher.js +8 -0
- package/elements/oj-refresher/OjRefresher.js.map +1 -0
- package/elements/oj-refresher/OjRefresher.ts +12 -0
- package/elements/oj-refresher/OjRefresherBase.js +20 -0
- package/elements/oj-refresher/OjRefresherBase.js.map +1 -0
- package/elements/oj-refresher/OjRefresherBase.ts +64 -0
- package/elements/oj-refresher/index.js +17 -0
- package/elements/oj-refresher/index.js.map +1 -0
- package/elements/oj-refresher/index.ts +27 -0
- package/elements/oj-row-expander/OjRowExpander.js +8 -0
- package/elements/oj-row-expander/OjRowExpander.js.map +1 -0
- package/elements/oj-row-expander/OjRowExpander.ts +12 -0
- package/elements/oj-row-expander/OjRowExpanderBase.js +20 -0
- package/elements/oj-row-expander/OjRowExpanderBase.js.map +1 -0
- package/elements/oj-row-expander/OjRowExpanderBase.ts +76 -0
- package/elements/oj-row-expander/index.js +17 -0
- package/elements/oj-row-expander/index.js.map +1 -0
- package/elements/oj-row-expander/index.ts +27 -0
- package/elements/oj-select-many/OjSelectMany.js +51 -0
- package/elements/oj-select-many/OjSelectMany.js.map +1 -0
- package/elements/oj-select-many/OjSelectMany.ts +80 -0
- package/elements/oj-select-many/OjSelectManyBase.js +89 -0
- package/elements/oj-select-many/OjSelectManyBase.js.map +1 -0
- package/elements/oj-select-many/OjSelectManyBase.ts +387 -0
- package/elements/oj-select-many/index.js +17 -0
- package/elements/oj-select-many/index.js.map +1 -0
- package/elements/oj-select-many/index.ts +27 -0
- package/elements/oj-select-one/OjSelectOne.js +45 -0
- package/elements/oj-select-one/OjSelectOne.js.map +1 -0
- package/elements/oj-select-one/OjSelectOne.ts +70 -0
- package/elements/oj-select-one/OjSelectOneBase.js +89 -0
- package/elements/oj-select-one/OjSelectOneBase.js.map +1 -0
- package/elements/oj-select-one/OjSelectOneBase.ts +387 -0
- package/elements/oj-select-one/index.js +17 -0
- package/elements/oj-select-one/index.js.map +1 -0
- package/elements/oj-select-one/index.ts +27 -0
- package/elements/oj-select-single/OjSelectSingle.js +35 -0
- package/elements/oj-select-single/OjSelectSingle.js.map +1 -0
- package/elements/oj-select-single/OjSelectSingle.ts +51 -0
- package/elements/oj-select-single/OjSelectSingleBase.js +77 -0
- package/elements/oj-select-single/OjSelectSingleBase.js.map +1 -0
- package/elements/oj-select-single/OjSelectSingleBase.ts +303 -0
- package/elements/oj-select-single/index.js +17 -0
- package/elements/oj-select-single/index.js.map +1 -0
- package/elements/oj-select-single/index.ts +27 -0
- package/elements/oj-selector/OjSelector.js +13 -0
- package/elements/oj-selector/OjSelector.js.map +1 -0
- package/elements/oj-selector/OjSelector.ts +20 -0
- package/elements/oj-selector/OjSelectorBase.js +26 -0
- package/elements/oj-selector/OjSelectorBase.js.map +1 -0
- package/elements/oj-selector/OjSelectorBase.ts +66 -0
- package/elements/oj-selector/index.js +17 -0
- package/elements/oj-selector/index.js.map +1 -0
- package/elements/oj-selector/index.ts +27 -0
- package/elements/oj-slider/OjSlider.js +15 -0
- package/elements/oj-slider/OjSlider.js.map +1 -0
- package/elements/oj-slider/OjSlider.ts +25 -0
- package/elements/oj-slider/OjSliderBase.js +71 -0
- package/elements/oj-slider/OjSliderBase.js.map +1 -0
- package/elements/oj-slider/OjSliderBase.ts +259 -0
- package/elements/oj-slider/index.js +17 -0
- package/elements/oj-slider/index.js.map +1 -0
- package/elements/oj-slider/index.ts +27 -0
- package/elements/oj-spark-chart/OjSparkChart.js +8 -0
- package/elements/oj-spark-chart/OjSparkChart.js.map +1 -0
- package/elements/oj-spark-chart/OjSparkChart.ts +12 -0
- package/elements/oj-spark-chart/OjSparkChartBase.js +95 -0
- package/elements/oj-spark-chart/OjSparkChartBase.js.map +1 -0
- package/elements/oj-spark-chart/OjSparkChartBase.ts +431 -0
- package/elements/oj-spark-chart/index.js +17 -0
- package/elements/oj-spark-chart/index.js.map +1 -0
- package/elements/oj-spark-chart/index.ts +27 -0
- package/elements/oj-status-meter-gauge/OjStatusMeterGauge.js +8 -0
- package/elements/oj-status-meter-gauge/OjStatusMeterGauge.js.map +1 -0
- package/elements/oj-status-meter-gauge/OjStatusMeterGauge.ts +12 -0
- package/elements/oj-status-meter-gauge/OjStatusMeterGaugeBase.js +107 -0
- package/elements/oj-status-meter-gauge/OjStatusMeterGaugeBase.js.map +1 -0
- package/elements/oj-status-meter-gauge/OjStatusMeterGaugeBase.ts +491 -0
- package/elements/oj-status-meter-gauge/index.js +17 -0
- package/elements/oj-status-meter-gauge/index.js.map +1 -0
- package/elements/oj-status-meter-gauge/index.ts +27 -0
- package/elements/oj-stream-list/OjStreamList.js +70 -0
- package/elements/oj-stream-list/OjStreamList.js.map +1 -0
- package/elements/oj-stream-list/OjStreamList.ts +79 -0
- package/elements/oj-stream-list/OjStreamListBase.js +29 -0
- package/elements/oj-stream-list/OjStreamListBase.js.map +1 -0
- package/elements/oj-stream-list/OjStreamListBase.ts +109 -0
- package/elements/oj-stream-list/index.js +17 -0
- package/elements/oj-stream-list/index.js.map +1 -0
- package/elements/oj-stream-list/index.ts +27 -0
- package/elements/oj-sunburst/OjSunburst.js +8 -0
- package/elements/oj-sunburst/OjSunburst.js.map +1 -0
- package/elements/oj-sunburst/OjSunburst.ts +12 -0
- package/elements/oj-sunburst/OjSunburstBase.js +104 -0
- package/elements/oj-sunburst/OjSunburstBase.js.map +1 -0
- package/elements/oj-sunburst/OjSunburstBase.ts +512 -0
- package/elements/oj-sunburst/index.js +17 -0
- package/elements/oj-sunburst/index.js.map +1 -0
- package/elements/oj-sunburst/index.ts +27 -0
- package/elements/oj-swipe-actions/OjSwipeActions.js +19 -0
- package/elements/oj-swipe-actions/OjSwipeActions.js.map +1 -0
- package/elements/oj-swipe-actions/OjSwipeActions.ts +30 -0
- package/elements/oj-swipe-actions/OjSwipeActionsBase.js +11 -0
- package/elements/oj-swipe-actions/OjSwipeActionsBase.js.map +1 -0
- package/elements/oj-swipe-actions/OjSwipeActionsBase.ts +37 -0
- package/elements/oj-swipe-actions/index.js +17 -0
- package/elements/oj-swipe-actions/index.js.map +1 -0
- package/elements/oj-swipe-actions/index.ts +27 -0
- package/elements/oj-switch/OjSwitch.js +16 -0
- package/elements/oj-switch/OjSwitch.js.map +1 -0
- package/elements/oj-switch/OjSwitch.ts +26 -0
- package/elements/oj-switch/OjSwitchBase.js +56 -0
- package/elements/oj-switch/OjSwitchBase.js.map +1 -0
- package/elements/oj-switch/OjSwitchBase.ts +192 -0
- package/elements/oj-switch/index.js +17 -0
- package/elements/oj-switch/index.js.map +1 -0
- package/elements/oj-switch/index.ts +27 -0
- package/elements/oj-tab-bar/OjTabBar.js +8 -0
- package/elements/oj-tab-bar/OjTabBar.js.map +1 -0
- package/elements/oj-tab-bar/OjTabBar.ts +12 -0
- package/elements/oj-tab-bar/OjTabBarBase.js +50 -0
- package/elements/oj-tab-bar/OjTabBarBase.js.map +1 -0
- package/elements/oj-tab-bar/OjTabBarBase.ts +200 -0
- package/elements/oj-tab-bar/index.js +17 -0
- package/elements/oj-tab-bar/index.js.map +1 -0
- package/elements/oj-tab-bar/index.ts +27 -0
- package/elements/oj-table/OjTable.js +8 -0
- package/elements/oj-table/OjTable.js.map +1 -0
- package/elements/oj-table/OjTable.ts +12 -0
- package/elements/oj-table/OjTableBase.js +98 -0
- package/elements/oj-table/OjTableBase.js.map +1 -0
- package/elements/oj-table/OjTableBase.ts +702 -0
- package/elements/oj-table/index.js +17 -0
- package/elements/oj-table/index.js.map +1 -0
- package/elements/oj-table/index.ts +27 -0
- package/elements/oj-tag-cloud/OjTagCloud.js +8 -0
- package/elements/oj-tag-cloud/OjTagCloud.js.map +1 -0
- package/elements/oj-tag-cloud/OjTagCloud.ts +12 -0
- package/elements/oj-tag-cloud/OjTagCloudBase.js +68 -0
- package/elements/oj-tag-cloud/OjTagCloudBase.js.map +1 -0
- package/elements/oj-tag-cloud/OjTagCloudBase.ts +318 -0
- package/elements/oj-tag-cloud/index.js +17 -0
- package/elements/oj-tag-cloud/index.js.map +1 -0
- package/elements/oj-tag-cloud/index.ts +27 -0
- package/elements/oj-text-area/OjTextArea.js +10 -0
- package/elements/oj-text-area/OjTextArea.js.map +1 -0
- package/elements/oj-text-area/OjTextArea.ts +14 -0
- package/elements/oj-text-area/OjTextAreaBase.js +95 -0
- package/elements/oj-text-area/OjTextAreaBase.js.map +1 -0
- package/elements/oj-text-area/OjTextAreaBase.ts +365 -0
- package/elements/oj-text-area/index.js +17 -0
- package/elements/oj-text-area/index.js.map +1 -0
- package/elements/oj-text-area/index.ts +27 -0
- package/elements/oj-thematic-map/OjThematicMap.js +8 -0
- package/elements/oj-thematic-map/OjThematicMap.js.map +1 -0
- package/elements/oj-thematic-map/OjThematicMap.ts +12 -0
- package/elements/oj-thematic-map/OjThematicMapBase.js +119 -0
- package/elements/oj-thematic-map/OjThematicMapBase.js.map +1 -0
- package/elements/oj-thematic-map/OjThematicMapBase.ts +777 -0
- package/elements/oj-thematic-map/index.js +17 -0
- package/elements/oj-thematic-map/index.js.map +1 -0
- package/elements/oj-thematic-map/index.ts +27 -0
- package/elements/oj-time-axis/OjTimeAxis.js +8 -0
- package/elements/oj-time-axis/OjTimeAxis.js.map +1 -0
- package/elements/oj-time-axis/OjTimeAxis.ts +12 -0
- package/elements/oj-time-axis/OjTimeAxisBase.js +26 -0
- package/elements/oj-time-axis/OjTimeAxisBase.js.map +1 -0
- package/elements/oj-time-axis/OjTimeAxisBase.ts +176 -0
- package/elements/oj-time-axis/index.js +17 -0
- package/elements/oj-time-axis/index.js.map +1 -0
- package/elements/oj-time-axis/index.ts +27 -0
- package/elements/oj-timeline/OjTimeline.js +8 -0
- package/elements/oj-timeline/OjTimeline.js.map +1 -0
- package/elements/oj-timeline/OjTimeline.ts +12 -0
- package/elements/oj-timeline/OjTimelineBase.js +71 -0
- package/elements/oj-timeline/OjTimelineBase.js.map +1 -0
- package/elements/oj-timeline/OjTimelineBase.ts +715 -0
- package/elements/oj-timeline/index.js +17 -0
- package/elements/oj-timeline/index.js.map +1 -0
- package/elements/oj-timeline/index.ts +27 -0
- package/elements/oj-train/OjTrain.js +8 -0
- package/elements/oj-train/OjTrain.js.map +1 -0
- package/elements/oj-train/OjTrain.ts +12 -0
- package/elements/oj-train/OjTrainBase.js +20 -0
- package/elements/oj-train/OjTrainBase.js.map +1 -0
- package/elements/oj-train/OjTrainBase.ts +72 -0
- package/elements/oj-train/index.js +17 -0
- package/elements/oj-train/index.js.map +1 -0
- package/elements/oj-train/index.ts +27 -0
- package/elements/oj-tree-view/OjTreeView.js +80 -0
- package/elements/oj-tree-view/OjTreeView.js.map +1 -0
- package/elements/oj-tree-view/OjTreeView.ts +117 -0
- package/elements/oj-tree-view/OjTreeViewBase.js +35 -0
- package/elements/oj-tree-view/OjTreeViewBase.js.map +1 -0
- package/elements/oj-tree-view/OjTreeViewBase.ts +131 -0
- package/elements/oj-tree-view/index.js +17 -0
- package/elements/oj-tree-view/index.js.map +1 -0
- package/elements/oj-tree-view/index.ts +27 -0
- package/elements/oj-treemap/OjTreemap.js +8 -0
- package/elements/oj-treemap/OjTreemap.js.map +1 -0
- package/elements/oj-treemap/OjTreemap.ts +12 -0
- package/elements/oj-treemap/OjTreemapBase.js +110 -0
- package/elements/oj-treemap/OjTreemapBase.js.map +1 -0
- package/elements/oj-treemap/OjTreemapBase.ts +594 -0
- package/elements/oj-treemap/index.js +17 -0
- package/elements/oj-treemap/index.js.map +1 -0
- package/elements/oj-treemap/index.ts +27 -0
- package/elements/oj-waterfall-layout/OjWaterfallLayout.js +8 -0
- package/elements/oj-waterfall-layout/OjWaterfallLayout.js.map +1 -0
- package/elements/oj-waterfall-layout/OjWaterfallLayout.ts +12 -0
- package/elements/oj-waterfall-layout/OjWaterfallLayoutBase.js +23 -0
- package/elements/oj-waterfall-layout/OjWaterfallLayoutBase.js.map +1 -0
- package/elements/oj-waterfall-layout/OjWaterfallLayoutBase.ts +87 -0
- package/elements/oj-waterfall-layout/index.js +17 -0
- package/elements/oj-waterfall-layout/index.js.map +1 -0
- package/elements/oj-waterfall-layout/index.ts +27 -0
- package/index.js +171 -0
- package/index.js.map +1 -0
- package/index.ts +449 -0
- package/lib/Expectation.js +189 -0
- package/lib/Expectation.js.map +1 -0
- package/lib/Expectation.ts +272 -0
- package/lib/OjFetch.js +83 -0
- package/lib/OjFetch.js.map +1 -0
- package/lib/OjFetch.ts +158 -0
- package/lib/ScreenshotManager.js +113 -0
- package/lib/ScreenshotManager.js.map +1 -0
- package/lib/ScreenshotManager.ts +195 -0
- package/lib/driver-manager.js +89 -0
- package/lib/driver-manager.js.map +1 -0
- package/lib/driver-manager.ts +330 -0
- package/lib/driver-override.js +116 -0
- package/lib/driver-override.js.map +1 -0
- package/lib/driver-override.ts +270 -0
- package/lib/input-utils.js +24 -0
- package/lib/input-utils.js.map +1 -0
- package/lib/input-utils.ts +50 -0
- package/lib/slot-proxy.js +25 -0
- package/lib/slot-proxy.js.map +1 -0
- package/lib/slot-proxy.ts +61 -0
- package/lib/stale-element.js +26 -0
- package/lib/stale-element.js.map +1 -0
- package/lib/stale-element.ts +40 -0
- package/package.json +19 -0
- package/tsconfig.json +10 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) Oracle Corporation. All rights reserved.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE
|
package/README.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Oracle JET Component WebElements
|
|
2
|
+
Usage:
|
|
3
|
+
|
|
4
|
+
```javascript
|
|
5
|
+
import ojwd from '@oracle/oraclejet-webdriver';
|
|
6
|
+
import {ojInputText, ...} from '@oracle/oraclejet-webdriver/elements';
|
|
7
|
+
|
|
8
|
+
describe('My suite of tests', function() {
|
|
9
|
+
it('can use Component WebElements', async function() {
|
|
10
|
+
let input = await ojInputText(driver, By.id('text-input-1'));
|
|
11
|
+
...
|
|
12
|
+
})
|
|
13
|
+
})
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
See [Testing JET UIs With WebDriver](https://confluence.oraclecorp.com/confluence/display/JET/Testing+JET+UIs+With+WebDriver) for details.
|
package/bin/generate
ADDED
|
@@ -0,0 +1,509 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Generate a component WebElement package from its metadata descriptor
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
const fs = require('fs');
|
|
10
|
+
const path = require('path');
|
|
11
|
+
|
|
12
|
+
// Map known types to an output type. Used by getSanitizedType() to ensure that
|
|
13
|
+
// component types can be mapped to valid TypeScript types.
|
|
14
|
+
const KNOWN_TYPES = {
|
|
15
|
+
// Known good types
|
|
16
|
+
boolean: 'boolean',
|
|
17
|
+
null: 'null',
|
|
18
|
+
number: 'number',
|
|
19
|
+
object: 'object',
|
|
20
|
+
string: 'string',
|
|
21
|
+
tuple: 'tuple',
|
|
22
|
+
undefined: 'undefined',
|
|
23
|
+
void: 'void',
|
|
24
|
+
any: 'any',
|
|
25
|
+
// Known bad types. Convert to valid types
|
|
26
|
+
function: 'null',
|
|
27
|
+
promise: 'null',
|
|
28
|
+
array: 'Array<unknown>'
|
|
29
|
+
};
|
|
30
|
+
// Map of reserved property names. Used to ensure that a superclass's mutator
|
|
31
|
+
// isn't overridden by one generated from properties.
|
|
32
|
+
const RESERVED_PROPS = {
|
|
33
|
+
metadata: 'metadataProperty',
|
|
34
|
+
size: 'sizeProperty',
|
|
35
|
+
text: 'textProperty'
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const node = process.argv.shift();
|
|
39
|
+
const cmd = process.argv.shift();
|
|
40
|
+
const mdPath = process.argv.shift();
|
|
41
|
+
let pkgDir = process.argv.shift() || '.';
|
|
42
|
+
|
|
43
|
+
if (!mdPath) {
|
|
44
|
+
console.log(
|
|
45
|
+
'\nUsage: ' + path.basename(cmd) + ' <metadata|-> [<output dir>]'
|
|
46
|
+
);
|
|
47
|
+
console.log('\nwhere <metadata> is one of:');
|
|
48
|
+
console.log('\t- a file path to component metadata (component.json)');
|
|
49
|
+
console.log('\t- "-" read metadata from stdin');
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const templateDir = path.dirname(cmd) + path.sep + 'templates';
|
|
54
|
+
|
|
55
|
+
let className;
|
|
56
|
+
// Main function, executed as async IIFE so that we can await on getMetadata()
|
|
57
|
+
(async function() {
|
|
58
|
+
const mdContents = await getMetadata(mdPath);
|
|
59
|
+
const md = JSON.parse(mdContents);
|
|
60
|
+
const name = md.name;
|
|
61
|
+
const version = md.version || '0.0.1';
|
|
62
|
+
className = titleCase(name);
|
|
63
|
+
const camelName = camelCase(name);
|
|
64
|
+
const props = md.properties;
|
|
65
|
+
|
|
66
|
+
// Package output dir is CCA's name
|
|
67
|
+
pkgDir += path.sep + name;
|
|
68
|
+
mkDirParents(pkgDir);
|
|
69
|
+
|
|
70
|
+
// Copy package.json files
|
|
71
|
+
copy(
|
|
72
|
+
templateDir + path.sep + 'package.json-template',
|
|
73
|
+
pkgDir + path.sep + 'package.json',
|
|
74
|
+
{
|
|
75
|
+
'@NAME@': name,
|
|
76
|
+
'@CLASSNAME@': className,
|
|
77
|
+
'@VERSION@': version
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
// Copy tsconfig.json
|
|
81
|
+
copy(
|
|
82
|
+
templateDir + path.sep + 'tsconfig.json-template',
|
|
83
|
+
pkgDir + path.sep + 'tsconfig.json'
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
// Create baseclass.ts content
|
|
87
|
+
let content = [];
|
|
88
|
+
let types = [];
|
|
89
|
+
Object.keys(props || {}).forEach(propName => {
|
|
90
|
+
const properties = props[propName];
|
|
91
|
+
const typeDef = getTypeDefinition(propName, properties);
|
|
92
|
+
let type = typeDef.type;
|
|
93
|
+
const desc = getHTMLEscapedText(properties.description) || '';
|
|
94
|
+
|
|
95
|
+
if (type) {
|
|
96
|
+
// Extended properties for "object" type
|
|
97
|
+
if (typeDef.typeDecl.length) {
|
|
98
|
+
types = types.concat(typeDef.typeDecl);
|
|
99
|
+
}
|
|
100
|
+
// Writeback propertyes get "changeNNN" function
|
|
101
|
+
if (properties && properties.writeback && !properties.readOnly) {
|
|
102
|
+
content = content.concat(indent(getSetterContent(propName, type, desc)));
|
|
103
|
+
}
|
|
104
|
+
content = content.concat(indent(getGetterContent(propName, type, desc)));
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// If extended properties for "object" type, wrap definitions in namespace
|
|
109
|
+
if (types.length) {
|
|
110
|
+
indent(types);
|
|
111
|
+
types.unshift(`\nnamespace ${className}Base {`);
|
|
112
|
+
types.push('}');
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
copy(
|
|
116
|
+
templateDir + path.sep + 'baseclass.ts-template',
|
|
117
|
+
pkgDir + path.sep + className + 'Base.ts',
|
|
118
|
+
{
|
|
119
|
+
'@CLASSNAME@': className,
|
|
120
|
+
'@CONTENT@': content.join('\n'),
|
|
121
|
+
'@TYPES@': types.join('\n')
|
|
122
|
+
}
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
copy(
|
|
126
|
+
templateDir + path.sep + 'class.ts-template',
|
|
127
|
+
pkgDir + path.sep + className + '.ts',
|
|
128
|
+
{
|
|
129
|
+
'@NAME@': name,
|
|
130
|
+
'@CLASSNAME@': className,
|
|
131
|
+
'@CAMELNAME@': camelName
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
copy(
|
|
135
|
+
templateDir + path.sep + 'index.ts-template',
|
|
136
|
+
pkgDir + path.sep + 'index.ts',
|
|
137
|
+
{
|
|
138
|
+
'@NAME@': name,
|
|
139
|
+
'@CLASSNAME@': className,
|
|
140
|
+
'@CAMELNAME@': camelName
|
|
141
|
+
}
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
copy(
|
|
145
|
+
templateDir + path.sep + 'element-test.spec.ts-template',
|
|
146
|
+
pkgDir + path.sep + 'element-test.spec.ts',
|
|
147
|
+
{
|
|
148
|
+
'@NAME@': name,
|
|
149
|
+
'@CAMELNAME@': camelName
|
|
150
|
+
}
|
|
151
|
+
);
|
|
152
|
+
|
|
153
|
+
console.log('Generated WebElement package in ' + pkgDir);
|
|
154
|
+
})();
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Get the data type for the given declared type. This function ensures that
|
|
158
|
+
* the declared type is legal in TypeScript by checking for known types in JET
|
|
159
|
+
* components that should be mapped to others.
|
|
160
|
+
* @param {string} name The property's name
|
|
161
|
+
* @param {object} props The property's object describing itself
|
|
162
|
+
* @return {object} An object describing the data type. Object keys are "type" "typeDecl"
|
|
163
|
+
* <code>
|
|
164
|
+
* {
|
|
165
|
+
* "type": string,
|
|
166
|
+
* "typeDecl": string[]
|
|
167
|
+
* }
|
|
168
|
+
* </code>
|
|
169
|
+
*/
|
|
170
|
+
function getTypeDefinition(name, props) {
|
|
171
|
+
const origType = getSanitizedType(props.type);
|
|
172
|
+
const types = (origType || '').split('|');
|
|
173
|
+
let decls = [];
|
|
174
|
+
// Iterate through all types if multiples exist ("string|number|...")
|
|
175
|
+
types.forEach(function(type, i) {
|
|
176
|
+
if (type.match(/^object$|Array<object>/i)) {
|
|
177
|
+
const decl = getObjectType(name, type, props);
|
|
178
|
+
types[i] = decl.type;
|
|
179
|
+
decls = decls.concat(decl.typeDecl);
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
return {
|
|
183
|
+
type: types.join('|'),
|
|
184
|
+
typeDecl: decls
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Get the data type for the given declared type. This function ensures that
|
|
190
|
+
* the declared type is legal in TypeScript by checking for known types in JET
|
|
191
|
+
* components that should be mapped to others.
|
|
192
|
+
* JET-specific types such as KeySet, DataProvider cannot be converted to TypeScript,
|
|
193
|
+
* and this function will return 'undefined' or anything it doesn't know about.
|
|
194
|
+
* @param {string} origType The original delcared data type
|
|
195
|
+
* @return {string} The data type inferred from the declared type, or undefined
|
|
196
|
+
* if no known good type exists.
|
|
197
|
+
*/
|
|
198
|
+
function getSanitizedType(origType) {
|
|
199
|
+
if (!origType) {
|
|
200
|
+
return origType;
|
|
201
|
+
}
|
|
202
|
+
// Check for multiple types "string|number|object ..."
|
|
203
|
+
if (origType.indexOf('|') > -1) {
|
|
204
|
+
let parts = [];
|
|
205
|
+
origType.split('|').forEach(type => {
|
|
206
|
+
type = getSanitizedType(type);
|
|
207
|
+
type && parts.push(type);
|
|
208
|
+
});
|
|
209
|
+
return parts.join('|');
|
|
210
|
+
}
|
|
211
|
+
// Check against KNOWN_TYPES for mapped data type
|
|
212
|
+
let sanitizedType = KNOWN_TYPES[origType.toLowerCase()];
|
|
213
|
+
// Parameterized types
|
|
214
|
+
const typeParams = origType.match(/([a-z\.]+)<(.+?)>/i);
|
|
215
|
+
if (typeParams) {
|
|
216
|
+
const generic = typeParams[1];
|
|
217
|
+
const params = typeParams[2];
|
|
218
|
+
// Paramterized Object not supported
|
|
219
|
+
if (generic.match(/^object/i)) {
|
|
220
|
+
sanitizedType = 'unknown';
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
// Get sanitized type for each param type
|
|
224
|
+
const paramTypes = [];
|
|
225
|
+
params.split(',').forEach(p => {
|
|
226
|
+
const sp = getSanitizedType(p);
|
|
227
|
+
sp && paramTypes.push(sp);
|
|
228
|
+
});
|
|
229
|
+
if (paramTypes.length) {
|
|
230
|
+
sanitizedType = `${generic}<${paramTypes.join(',')}>`;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return sanitizedType;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Given a property whose type is "object" or "Array<object>", get its Type
|
|
239
|
+
* definition.
|
|
240
|
+
* @param {string} name The property's name
|
|
241
|
+
* @param {string} type The property's type
|
|
242
|
+
* @param {object} props The property descriptor, whose own "properties" object will
|
|
243
|
+
* be converted to a type declaration
|
|
244
|
+
* @return {object} An object containing the Type declaration for the properties, i.e.
|
|
245
|
+
* "type" - a type string
|
|
246
|
+
* "typeDecl" - array of strings containing any type definitions for the generic
|
|
247
|
+
* object types
|
|
248
|
+
*/
|
|
249
|
+
function getObjectType(name, type, props) {
|
|
250
|
+
let buf = [];
|
|
251
|
+
const typeProps = type.match(/^array</i)
|
|
252
|
+
? getProperty('extension.vbdt.itemProperties', props)
|
|
253
|
+
: props.properties;
|
|
254
|
+
|
|
255
|
+
if (typeProps) {
|
|
256
|
+
const typeInArray = type.match(/^Array/);
|
|
257
|
+
type = titleCase(name);
|
|
258
|
+
buf.push('export interface ' + type + ' {');
|
|
259
|
+
// Add on namespace to type
|
|
260
|
+
type = `${className}Base.${type}`;
|
|
261
|
+
if (typeInArray) {
|
|
262
|
+
type = 'Array<' + type + '>';
|
|
263
|
+
}
|
|
264
|
+
let nestedDecl = [];
|
|
265
|
+
// Iterate through all property types and build their definitions
|
|
266
|
+
Object.keys(typeProps).forEach(prop => {
|
|
267
|
+
const desc = getHTMLEscapedText(typeProps[prop].description) || '';
|
|
268
|
+
let type = getSanitizedType(typeProps[prop].type);
|
|
269
|
+
// Nested object type
|
|
270
|
+
if (type && type.match(/object|Array<object>/i)) {
|
|
271
|
+
const decl = getObjectType(
|
|
272
|
+
name + titleCase(prop),
|
|
273
|
+
type,
|
|
274
|
+
typeProps[prop]
|
|
275
|
+
);
|
|
276
|
+
type = decl.type;
|
|
277
|
+
nestedDecl = nestedDecl.concat(decl.typeDecl);
|
|
278
|
+
}
|
|
279
|
+
if (type && type !== 'null') {
|
|
280
|
+
buf = buf.concat(indent(['/**', ' * ' + desc, ' */']));
|
|
281
|
+
buf = buf.concat(indent(['"' + prop + '": ' + type + ';']));
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
buf.push('}');
|
|
285
|
+
buf = buf.concat(nestedDecl);
|
|
286
|
+
}
|
|
287
|
+
return {
|
|
288
|
+
type: type,
|
|
289
|
+
typeDecl: buf
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Convenience function to retrieve a property within an object using dot-notation.
|
|
295
|
+
* This is espcially useful when a nested property's parents MAY NOT exist, and
|
|
296
|
+
* we don't want to have to test for every parent level to get to the property.
|
|
297
|
+
* @param {string} propName The dot-notated property name
|
|
298
|
+
* @param {object} obj The root object in which to search for the property
|
|
299
|
+
* @return {any} The property value
|
|
300
|
+
*/
|
|
301
|
+
function getProperty(propName, obj) {
|
|
302
|
+
if (!obj) {
|
|
303
|
+
return obj;
|
|
304
|
+
}
|
|
305
|
+
if (propName in obj) {
|
|
306
|
+
return obj[propName];
|
|
307
|
+
} else if (propName.match(/\./)) {
|
|
308
|
+
const parts = propName.split('.');
|
|
309
|
+
const root = parts.shift();
|
|
310
|
+
return getProperty(parts.join('.'), obj[root]);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* Ensure that the given text is sanitized so that it can be displayed as markup.
|
|
316
|
+
* @param {string} text The text to be sanitized
|
|
317
|
+
* @return {string} The HTML-sanitized text
|
|
318
|
+
*/
|
|
319
|
+
function getHTMLEscapedText(text) {
|
|
320
|
+
text = (text || '').replace(/</g, '<');
|
|
321
|
+
return text;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Convenience function to create a nested directory and all of its parents, if
|
|
326
|
+
* necessary. Equivalent to "mkdir -p my/child/dir"
|
|
327
|
+
* @param {string} dirname The path-separated directory name
|
|
328
|
+
*/
|
|
329
|
+
function mkDirParents(dirname) {
|
|
330
|
+
// Loop thru dirnames to make parent dirs
|
|
331
|
+
const parents = [];
|
|
332
|
+
dirname.split(path.sep).forEach(function(dir) {
|
|
333
|
+
try {
|
|
334
|
+
parents.push(dir);
|
|
335
|
+
fs.mkdirSync(parents.join(path.sep));
|
|
336
|
+
} catch (e) {}
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Get the accessor function name for the given property
|
|
342
|
+
* @param {string} prop The property name
|
|
343
|
+
* @return {string} The property's accessor name
|
|
344
|
+
*/
|
|
345
|
+
function getGetterName(prop) {
|
|
346
|
+
prop = getAlternativePropName(prop);
|
|
347
|
+
return 'get' + titleCase(prop);
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Get the mutator functio nname for the given property
|
|
351
|
+
* @param {string} prop The property name
|
|
352
|
+
* @return {string} The property's mutator name
|
|
353
|
+
*/
|
|
354
|
+
function getSetterName(prop) {
|
|
355
|
+
prop = getAlternativePropName(prop);
|
|
356
|
+
return 'change' + titleCase(prop);
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Get an alternate name for the given property name, if one exists. This function
|
|
360
|
+
* checks against reserved property names which shouldn't be overridden. If the
|
|
361
|
+
* given property name is reserved, it will return an alternative name, otherwise,
|
|
362
|
+
* it will return the same (given) name.
|
|
363
|
+
* @param {string} prop The property name
|
|
364
|
+
* @return {string} The alternative property name or the original one, if not
|
|
365
|
+
* reserved.
|
|
366
|
+
*/
|
|
367
|
+
function getAlternativePropName(prop) {
|
|
368
|
+
return RESERVED_PROPS[prop] || prop;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Get the contents of the accessor (getter) function for the given property.
|
|
373
|
+
* @param {string} prop The property name to be set
|
|
374
|
+
* @param {string} type The property type
|
|
375
|
+
* @param {string=} desc An optional description of the property
|
|
376
|
+
* @return {string} The getter function contents
|
|
377
|
+
*/
|
|
378
|
+
function getGetterContent(prop, type, desc) {
|
|
379
|
+
const func = getGetterName(prop);
|
|
380
|
+
return [
|
|
381
|
+
'/**',
|
|
382
|
+
' * Gets the value of "' + prop + '" property.',
|
|
383
|
+
' * ' + desc,
|
|
384
|
+
' * @return The value of "' + prop + '" property.',
|
|
385
|
+
' */',
|
|
386
|
+
'public ' + func + '(): Promise<' + type + '> {',
|
|
387
|
+
' return this.getProperty<' + type + '>("' + prop + '");',
|
|
388
|
+
'}',
|
|
389
|
+
''
|
|
390
|
+
];
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Get the contents of the mutator (setter) function for the given property.
|
|
395
|
+
* @param {string} prop The property name to be set
|
|
396
|
+
* @param {string} type The property type
|
|
397
|
+
* @param {string=} desc An optional description of the property
|
|
398
|
+
* @return {string} The setter function contents
|
|
399
|
+
*/
|
|
400
|
+
function getSetterContent(prop, type, desc) {
|
|
401
|
+
const func = getSetterName(prop);
|
|
402
|
+
return [
|
|
403
|
+
'/**',
|
|
404
|
+
' * Sets the value of "' + prop + '" property.',
|
|
405
|
+
' * ' + desc,
|
|
406
|
+
' * @param ' + prop + ' The value to set for "' + prop + '"',
|
|
407
|
+
' */',
|
|
408
|
+
'public ' + func + '(' + prop + ': ' + type + '): Promise<void> {',
|
|
409
|
+
' return this.setProperty<' + type + '>("' + prop + '", ' + prop + ');',
|
|
410
|
+
'}',
|
|
411
|
+
''
|
|
412
|
+
];
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Convert 'dashed-name' to 'dashedName'
|
|
417
|
+
* @param {string} name
|
|
418
|
+
* @return {string} The camel-cased name
|
|
419
|
+
*/
|
|
420
|
+
function camelCase(name) {
|
|
421
|
+
return name.replace(/[^a-z0-9](.)/gi, function(v) {
|
|
422
|
+
return v[1].toUpperCase();
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Convert 'dashed-name' to 'DashedName'
|
|
428
|
+
* @param {string} name
|
|
429
|
+
* @return {string} The title-cased name
|
|
430
|
+
*/
|
|
431
|
+
function titleCase(name) {
|
|
432
|
+
name = camelCase(name);
|
|
433
|
+
return name.charAt(0).toUpperCase() + name.substring(1);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
/**
|
|
437
|
+
* Indent lines by padding with the given number of spaces. This function modifies
|
|
438
|
+
* the contents of the original array inline.
|
|
439
|
+
* @param {string[]} src The original source array of lines to indent
|
|
440
|
+
* @param {number=} spaces Optional spaces to indent. Defaults to 2
|
|
441
|
+
* @return {Array<string>} The original src string[]
|
|
442
|
+
*/
|
|
443
|
+
function indent(src, spaces) {
|
|
444
|
+
if (spaces === undefined) {
|
|
445
|
+
spaces = 2;
|
|
446
|
+
}
|
|
447
|
+
for (let i = 0, len = src.length; i < len; i++) {
|
|
448
|
+
const line = src[i];
|
|
449
|
+
if (line) {
|
|
450
|
+
src[i] = new Array(spaces + 1).join(' ') + line;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
return src;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Copy the contents of the source file to the destination, optionally substituting
|
|
458
|
+
* key values. If the destination file exists, its contents won't be overwritten.
|
|
459
|
+
* @param {string} src The path to the source file
|
|
460
|
+
* @param {string} dest The path to the destination file
|
|
461
|
+
* @param {object} filters An object of filters to replace during the copy. The
|
|
462
|
+
* object keys are the tokens to be replaced with their values.
|
|
463
|
+
*/
|
|
464
|
+
function copy(src, dest, filters) {
|
|
465
|
+
let contents = fs.readFileSync(src, 'utf8');
|
|
466
|
+
Object.keys(filters || {}).forEach(function(key) {
|
|
467
|
+
// Use function to return 'val' to prevent values containing RegExp
|
|
468
|
+
// patterns like "$&" from repeating the key
|
|
469
|
+
function val() { return filters[key]; }
|
|
470
|
+
while (contents.indexOf(key) > -1) {
|
|
471
|
+
contents = contents.replace(key, val);
|
|
472
|
+
}
|
|
473
|
+
});
|
|
474
|
+
fs.writeFileSync(dest, contents, { mode: 0o644 });
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* Get the metadata given the metadata path. If the path is "-", read from stdin.
|
|
479
|
+
* @param {string} mdPath The path to the metadata. Can be a file path or stdin.
|
|
480
|
+
* @return {string} The metadata JSON contents
|
|
481
|
+
*/
|
|
482
|
+
async function getMetadata(mdPath) {
|
|
483
|
+
let md;
|
|
484
|
+
if (mdPath === '-') {
|
|
485
|
+
md = await readStdin();
|
|
486
|
+
} else {
|
|
487
|
+
md = fs.readFileSync(mdPath, 'utf8');
|
|
488
|
+
}
|
|
489
|
+
return md;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
/**
|
|
493
|
+
* Fetch the JET metadata object for the given element, whose name is embedded
|
|
494
|
+
* as the "&element=" parameter in the URL.
|
|
495
|
+
*
|
|
496
|
+
* @return Promise<string> A Promise which resolves to the metadata contents string
|
|
497
|
+
*/
|
|
498
|
+
function readStdin() {
|
|
499
|
+
process.stdin.resume();
|
|
500
|
+
process.stdin.setEncoding('utf8');
|
|
501
|
+
|
|
502
|
+
const md = [];
|
|
503
|
+
return new Promise(function(resolve, reject) {
|
|
504
|
+
process.stdin.on('data', chunk => {
|
|
505
|
+
md.push(chunk);
|
|
506
|
+
});
|
|
507
|
+
process.stdin.on('end', () => resolve(md.join('\n')));
|
|
508
|
+
});
|
|
509
|
+
}
|
package/bin/generate-jet
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
'use strict';
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* Iterate through JET component metadata files to generate WebElements. This
|
|
7
|
+
* script takes either a directory, from which it will scan for all *.json files,
|
|
8
|
+
* or a single JSON file.
|
|
9
|
+
* The file(s) are passed to the "generate" utility to create the component
|
|
10
|
+
* WebElement package.
|
|
11
|
+
*/
|
|
12
|
+
const {spawnSync} = require('child_process');
|
|
13
|
+
const fs = require('fs');
|
|
14
|
+
const path = require('path');
|
|
15
|
+
|
|
16
|
+
const node = process.argv.shift();
|
|
17
|
+
const cmd = process.argv.shift();
|
|
18
|
+
let allComps = process.argv.shift();
|
|
19
|
+
const pkgRoot = path.dirname(cmd)+path.sep+'..'
|
|
20
|
+
const generate = [pkgRoot, 'bin', 'generate'].join(path.sep);
|
|
21
|
+
const elements = pkgRoot+path.sep+'elements';
|
|
22
|
+
const output = pkgRoot+path.sep+'generated';
|
|
23
|
+
|
|
24
|
+
if (!allComps) {
|
|
25
|
+
console.log('\nUsage: ' +path.basename(cmd)+ ' <JET allComponents.json metadata file>');
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Create 'generated' output dir--try/catch in case it already exists
|
|
30
|
+
try {
|
|
31
|
+
fs.mkdirSync(output);
|
|
32
|
+
} catch (ex) {
|
|
33
|
+
console.warn(ex.message);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const compUrlsFile = path.dirname(cmd)+path.sep+'templates'+path.sep+'jetcomponents.json';
|
|
37
|
+
const compUrls = JSON.parse(fs.readFileSync(compUrlsFile), 'utf8');
|
|
38
|
+
|
|
39
|
+
// Generate individual files from allComponents.json so that 'generate' script
|
|
40
|
+
// can read them
|
|
41
|
+
let files = [];
|
|
42
|
+
const comps = JSON.parse(fs.readFileSync(allComps), 'utf8').components;
|
|
43
|
+
Object.keys(comps).forEach((key) => {
|
|
44
|
+
let file = [output, key + '.json'].join(path.sep);
|
|
45
|
+
files.push(file);
|
|
46
|
+
let contents = JSON.stringify(comps[key], null, 2);
|
|
47
|
+
fs.writeFileSync(file, contents, {mode: 0o644});
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
files.forEach((absFile) => {
|
|
51
|
+
if (absFile.match(/\.json$/)) {
|
|
52
|
+
// Test if element name exists in whitelist
|
|
53
|
+
let md = JSON.parse(fs.readFileSync(absFile), 'utf8');
|
|
54
|
+
if (compUrls.indexOf(md.name) > -1) {
|
|
55
|
+
let out = spawnSync(node, [generate, absFile, output]);
|
|
56
|
+
const err = out.stderr.toString();
|
|
57
|
+
if (!err) {
|
|
58
|
+
postProcess(md.name);
|
|
59
|
+
console.log(out.output.join(''));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
throw err;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
updateIndex();
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Post-process the 'generate' output files. Copies the generated content (from
|
|
72
|
+
* "generated" dir) to the repo directory, "elements."
|
|
73
|
+
* @param name The element tag name
|
|
74
|
+
*/
|
|
75
|
+
function postProcess(name) {
|
|
76
|
+
const className = titleCase(name);
|
|
77
|
+
const classFile = className+'.ts';
|
|
78
|
+
const elementDir = getElementDir(name);
|
|
79
|
+
|
|
80
|
+
if (!fs.existsSync(elementDir)) {
|
|
81
|
+
fs.mkdirSync(elementDir);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// index.ts - always replace
|
|
85
|
+
let indexFile = getOutputFile(name, 'index.ts');
|
|
86
|
+
let indexContent = fs.readFileSync(indexFile).toString();
|
|
87
|
+
indexContent = indexContent
|
|
88
|
+
.replace(/@oracle\/oraclejet-webdriver/g, '../../')
|
|
89
|
+
fs.writeFileSync(indexFile, indexContent);
|
|
90
|
+
fs.copyFileSync(indexFile, getElementFile(name, 'index.ts'));
|
|
91
|
+
// <ClassName>.ts - copy only if doesn't already exist
|
|
92
|
+
let classFilePath = getElementFile(name, classFile);
|
|
93
|
+
if (!fs.existsSync(classFilePath)) {
|
|
94
|
+
fs.copyFileSync(getOutputFile(name, classFile), classFilePath);
|
|
95
|
+
}
|
|
96
|
+
// <ClassName>Base.ts - always replace
|
|
97
|
+
const baseName = className+'Base';
|
|
98
|
+
let baseFile = getOutputFile(name, baseName+'.ts');
|
|
99
|
+
let baseContent = fs.readFileSync(baseFile).toString();
|
|
100
|
+
baseContent = baseContent
|
|
101
|
+
.replace(/@oracle\/oraclejet-webdriver\/elements/g, '../')
|
|
102
|
+
fs.writeFileSync(baseFile, baseContent);
|
|
103
|
+
fs.copyFileSync(baseFile, getElementFile(name, baseName+'.ts'));
|
|
104
|
+
// Remove unneeded files
|
|
105
|
+
fs.unlinkSync(getOutputFile(name, 'element-test.spec.ts'));
|
|
106
|
+
fs.unlinkSync(getOutputFile(name, 'package.json'));
|
|
107
|
+
fs.unlinkSync(getOutputFile(name, 'tsconfig.json'));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Update elements/index.ts to include all of the WebElements and their convenience
|
|
112
|
+
* functions to be exported.
|
|
113
|
+
*/
|
|
114
|
+
function updateIndex() {
|
|
115
|
+
const indexFile = `${elements}/index.ts`;
|
|
116
|
+
const buffer = [`/**
|
|
117
|
+
* This file aggregates all JET WebElements together into a single module, and
|
|
118
|
+
* is generated by the build. DO NOT hand-edit this file as its contents will be
|
|
119
|
+
* overwritten.
|
|
120
|
+
*/
|
|
121
|
+
export { ojWebElement, OjWebElement } from "./OjWebElement";`
|
|
122
|
+
];
|
|
123
|
+
fs.readdirSync(elements).forEach(dir => {
|
|
124
|
+
// Test if "index.ts" exists under the directory
|
|
125
|
+
if (fs.existsSync(`${elements}${path.sep}${dir}${path.sep}index.ts`)) {
|
|
126
|
+
const className = titleCase(dir);
|
|
127
|
+
const helperName = camelCase(dir);
|
|
128
|
+
buffer.push(
|
|
129
|
+
`export { ${helperName}, ${className} } from "./${dir}";`
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
fs.writeFileSync(indexFile, buffer.join('\n'));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function getOutputFile(name, file) {
|
|
137
|
+
return output + path.sep + name + path.sep + file;
|
|
138
|
+
}
|
|
139
|
+
function getElementDir(name) {
|
|
140
|
+
return elements + path.sep + name;
|
|
141
|
+
}
|
|
142
|
+
function getElementFile(name, file) {
|
|
143
|
+
return getElementDir(name) + path.sep + file;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Convert 'dashed-name' to 'dashedName'
|
|
148
|
+
* @param {string} name
|
|
149
|
+
*/
|
|
150
|
+
function camelCase(name) {
|
|
151
|
+
return name.replace(/[^a-z0-9](.)/ig, function(v) {
|
|
152
|
+
return v[1].toUpperCase()
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Convert 'dashed-name' to 'DashedName'
|
|
158
|
+
* @param {string} name
|
|
159
|
+
*/
|
|
160
|
+
function titleCase(name) {
|
|
161
|
+
name = camelCase(name);
|
|
162
|
+
return name.charAt(0).toUpperCase()+name.substring(1);
|
|
163
|
+
}
|