diff --git a/.eslintrc b/.eslintrc index 6f4c9108d..ac9562565 100644 --- a/.eslintrc +++ b/.eslintrc @@ -8,6 +8,7 @@ "airbnb", "airbnb/hooks", "prettier", + "plugin:comment-length/recommended", "plugin:jest/recommended", "plugin:jsdoc/recommended" ], @@ -55,6 +56,20 @@ ], "class-methods-use-this": 1, "comma-dangle": 0, + "comment-length/limit-single-line-comments": [ + "warn", + { + "maxLength": 120, + "logicalWrap": true + } + ], + "comment-length/limit-multi-line-comments": [ + "warn", + { + "maxLength": 120, + "logicalWrap": true + } + ], "consistent-return": 1, "default-param-last": 0, "import/extensions": [ @@ -120,9 +135,15 @@ "error", { "code": 240, + "comments": 120, + "ignoreComments": false, "ignoreUrls": true } ], + "multiline-comment-style": [ + "warn", + "starred-block" + ], "no-case-declarations": 0, "no-console": 0, "no-continue": 0, diff --git a/package.json b/package.json index c7a18b995..88c583218 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "test:integration-ephemeral": "TZ=UTC jest ./tests --no-cache --testPathIgnorePatterns ./tests/dist.test.js", "test:integration-dev": "jest --roots=./tests --watch", "test:lint": "eslint --ext=json --ext=js --ext=jsx ./src", + "test:lintfix": "eslint --ext=json --ext=js --ext=jsx --fix ./src", "test:spell-support": "cspell ./README.md ./config/README.md ./CONTRIBUTING.md --config ./config/cspell.config.json", "test:spell": "cspell './public/locales/**/en*json' './src/**/*.js' --config ./config/cspell.config.json", "test:local": "jest --roots=./src --watch", @@ -132,6 +133,7 @@ "dotenv-webpack": "^8.0.1", "eslint": "8.50.0", "eslint-config-airbnb": "^19.0.4", + "eslint-plugin-comment-length": "^1.6.1", "eslint-config-prettier": "^9.0.0", "eslint-plugin-import": "^2.28.1", "eslint-plugin-jest": "^27.2.3", diff --git a/src/common/README.md b/src/common/README.md index cf789c840..b4061f12a 100644 --- a/src/common/README.md +++ b/src/common/README.md @@ -279,14 +279,16 @@ Associated with running unit tests. See dotenv config files for activation. ### General~UI\_DEPLOY\_PATH\_PREFIX : string Apply a path prefix for routing. -Typically associated with applying a "beta" path prefix. See dotenv config files for updating. See build scripts for generated prefix. +Typically associated with applying a "beta" path prefix. See dotenv config files for updating. +See build scripts for generated prefix. **Kind**: inner constant of [General](#Helpers.module_General) ### General~UI\_DEPLOY\_PATH\_LINK\_PREFIX : string Patch for compensating for platform updates where a mismatch between "beta" and "preview" for redirects means -that the same prefix can no longer be used for both additional remote resources and links. See build scripts for generated prefix. +that the same prefix can no longer be used for both additional remote resources and links. +See build scripts for generated prefix. **Kind**: inner constant of [General](#Helpers.module_General) diff --git a/src/common/helpers.js b/src/common/helpers.js index 7ef436a24..24731b979 100644 --- a/src/common/helpers.js +++ b/src/common/helpers.js @@ -223,18 +223,21 @@ const TEST_MODE = process.env.REACT_APP_ENV === 'test'; /** * Apply a path prefix for routing. - * Typically associated with applying a "beta" path prefix. See dotenv config files for updating. See build scripts for generated prefix. + * Typically associated with applying a "beta" path prefix. See dotenv config files for updating. + * See build scripts for generated prefix. * * @type {string} */ const UI_DEPLOY_PATH_PREFIX = process.env.REACT_APP_UI_DEPLOY_PATH_PREFIX; /** - * FixMe: Replace, or alias towards UI_DEPLOY_PATH_PREFIX, this dotenv parameter if/when "beta" and "preview" are normalized. + * FixMe: Replace, or alias towards UI_DEPLOY_PATH_PREFIX, this dotenv parameter if/when "beta" and "preview" are + * normalized. */ /** * Patch for compensating for platform updates where a mismatch between "beta" and "preview" for redirects means - * that the same prefix can no longer be used for both additional remote resources and links. See build scripts for generated prefix. + * that the same prefix can no longer be used for both additional remote resources and links. + * See build scripts for generated prefix. * * @type {string} */ diff --git a/src/components/README.md b/src/components/README.md index 218869349..5682d3e82 100644 --- a/src/components/README.md +++ b/src/components/README.md @@ -512,7 +512,7 @@ Set application messages for banner display - messagesArray.<{id: string, message: string, title: string, variant: string}> | Object + messagesArray | Object @@ -1525,8 +1525,8 @@ Fix pf props inconsistency for dropdown button props. ### Select~Select(props) ⇒ React.ReactNode -A wrapper for Pf Select, and emulator for Pf Dropdown. Provides consistent restructured event data for onSelect callback -for both select and dropdown. +A wrapper for Pf Select, and emulator for Pf Dropdown. Provides consistent restructured event data for onSelect +callback for both select and dropdown. **Kind**: inner method of [Select](#Form.module_Select) **Emits**: [onDropdownSelect](#event_onDropdownSelect), [onSplitButton](#event_onSplitButton), [onToggle](#event_onToggle) @@ -2279,7 +2279,8 @@ Get daily and monthly totals from a data set. A metric totals helper. params.dataSetobject - params.isCurrentboolean

Is the current value the "current month". A proxy value passed through "graphCardMetricTotals"

+ params.isCurrentboolean

Is the current value the "current month". A proxy value passed through + "graphCardMetricTotals"

@@ -2324,7 +2325,8 @@ Get a remaining capacity from data sets. A metric totals helper. params.tallyDataArray - params.isCurrentboolean

Is the current value the "current month". A proxy value passed through "graphCardMetricTotals"

+ params.isCurrentboolean

Is the current value the "current month". A proxy value passed + through "graphCardMetricTotals"

@@ -2349,7 +2351,8 @@ Get a remaining overage from data sets. A metric totals helper. params.tallyDataArray - params.isCurrentboolean

Is the current value the "current month". A proxy value passed through "graphCardMetricTotals"

+ params.isCurrentboolean

Is the current value the "current month". A proxy value passed through + "graphCardMetricTotals"

@@ -2817,7 +2820,8 @@ See, https://react.i18next.com/ - componentsArray

An array of HTML/React nodes used to replace string tokens. i.e. "[, <React.Fragment />]"

+ componentsArray

An array of HTML/React nodes used to replace string tokens. + i.e. "[, <React.Fragment />]"

settingsobject diff --git a/src/components/bannerMessages/bannerMessagesContext.js b/src/components/bannerMessages/bannerMessagesContext.js index fc2d86a52..cabd9a5e0 100644 --- a/src/components/bannerMessages/bannerMessagesContext.js +++ b/src/components/bannerMessages/bannerMessagesContext.js @@ -86,7 +86,7 @@ const useSetBannerMessages = ({ * Set application messages for banner display * * @callback setBannerMessages - * @param {Array<{ id: string, message: string, title: string, variant: string }>|{ id: string, message: string, title: string, variant: string }} messages + * @param {Array|{ id: string, message: string, title: string, variant: string }} messages */ return useCallback( messages => { diff --git a/src/components/chart/chart.js b/src/components/chart/chart.js index b9475f9a8..fbdfc007b 100644 --- a/src/components/chart/chart.js +++ b/src/components/chart/chart.js @@ -172,10 +172,10 @@ const Chart = ({ /** * Prop types. * - * @type {{chartTooltip: React.ReactNode|Function, xValueFormat: Function, padding: {top: number, left: number, bottom: number, - * right: number}, xAxisTickFormat: Function, themeColor: string, chartLegend: React.ReactNode|Function, - * yAxisTickFormat: Function, dataSets: Array, xAxisFixLabelOverlap: boolean, xAxisLabelIncrement: number, - * yValueFormat: Function}} + * @type {{chartTooltip: React.ReactNode|Function, xValueFormat: Function, padding: {top: number, left: number, + * bottom: number, right: number}, xAxisTickFormat: Function, themeColor: string, chartLegend: + * React.ReactNode|Function, yAxisTickFormat: Function, dataSets: Array, xAxisFixLabelOverlap: boolean, + * xAxisLabelIncrement: number, yValueFormat: Function}} */ Chart.propTypes = { chartLegend: PropTypes.oneOfType([PropTypes.node, PropTypes.func]), @@ -227,10 +227,10 @@ Chart.propTypes = { /** * Default props. * - * @type {{chartTooltip: React.ReactNode|Function, xValueFormat: Function, padding: {top: number, left: number, bottom: number, - * right: number}, xAxisTickFormat: Function, themeColor: string, chartLegend: React.ReactNode|Function, - * yAxisTickFormat: Function, dataSets: Array, xAxisFixLabelOverlap: boolean, xAxisLabelIncrement: number, - * yValueFormat: Function}} + * @type {{chartTooltip: React.ReactNode|Function, xValueFormat: Function, padding: {top: number, left: number, + * bottom: number, right: number}, xAxisTickFormat: Function, themeColor: string, chartLegend: + * React.ReactNode|Function, yAxisTickFormat: Function, dataSets: Array, xAxisFixLabelOverlap: boolean, + * xAxisLabelIncrement: number, yValueFormat: Function}} */ Chart.defaultProps = { chartLegend: null, diff --git a/src/components/form/select.js b/src/components/form/select.js index 14841b001..5227c9f96 100644 --- a/src/components/form/select.js +++ b/src/components/form/select.js @@ -265,8 +265,8 @@ const formatButtonParentProps = (formattedButtonProps = {}) => { }; /** - * A wrapper for Pf Select, and emulator for Pf Dropdown. Provides consistent restructured event data for onSelect callback - * for both select and dropdown. + * A wrapper for Pf Select, and emulator for Pf Dropdown. Provides consistent restructured event data for onSelect + * callback for both select and dropdown. * * @fires onDropdownSelect * @fires onSplitButton @@ -532,10 +532,11 @@ const Select = ({ /** * Prop types. * - * @type {{isFlipEnabled: boolean, toggleIcon: (React.ReactNode|Function), className: string, onSplitButton: Function, ariaLabel: string, - * onSelect: Function, isToggleText: boolean, isDropdownButton: boolean, maxHeight: number, buttonVariant: string, name: string, - * options: Array|object, selectedOptions: Array|number|string, variant: string, isInline: boolean, id: string, isDisabled: boolean, - * placeholder: string, position: string, splitButtonVariant: string, direction: string}} + * @type {{isFlipEnabled: boolean, toggleIcon: (React.ReactNode|Function), className: string, onSplitButton: Function, + * ariaLabel: string, onSelect: Function, isToggleText: boolean, isDropdownButton: boolean, maxHeight: number, + * buttonVariant: string, name: string, options: Array|object, selectedOptions: Array|number|string, + * variant: string, isInline: boolean, id: string, isDisabled: boolean, placeholder: string, position: string, + * splitButtonVariant: string, direction: string}} */ Select.propTypes = { ariaLabel: PropTypes.string, @@ -585,10 +586,10 @@ Select.propTypes = { /** * Default props. * - * @type {{isFlipEnabled: boolean, toggleIcon: null, className: string, onSplitButton: Function, ariaLabel: string, onSelect: Function, - * isToggleText: boolean, isDropdownButton: boolean, maxHeight: null, buttonVariant: string, name: null, options: Array, - * selectedOptions: null, variant: SelectVariant.single, isInline: boolean, id: string, isDisabled: boolean, placeholder: string, - * position: string, splitButtonVariant: null, direction: string}} + * @type {{isFlipEnabled: boolean, toggleIcon: null, className: string, onSplitButton: Function, ariaLabel: string, + * onSelect: Function, isToggleText: boolean, isDropdownButton: boolean, maxHeight: null, buttonVariant: string, + * name: null, options: Array, selectedOptions: null, variant: SelectVariant.single, isInline: boolean, id: string, + * isDisabled: boolean, placeholder: string, position: string, splitButtonVariant: null, direction: string}} */ Select.defaultProps = { ariaLabel: 'Select option', diff --git a/src/components/graphCard/graphCardChartLegend.js b/src/components/graphCard/graphCardChartLegend.js index d00ecb48c..13a3cf056 100644 --- a/src/components/graphCard/graphCardChartLegend.js +++ b/src/components/graphCard/graphCardChartLegend.js @@ -192,8 +192,8 @@ GraphCardChartLegend.propTypes = { /** * Default props. * - * @type {{datum: {dataSets: Array}, useProduct: Function, t: Function, useGraphCardContext: Function, useDispatch: Function, - * useSelectors: Function, chart: {hide: Function, toggle: Function, isToggled: Function}}} + * @type {{datum: {dataSets: Array}, useProduct: Function, t: Function, useGraphCardContext: Function, + * useDispatch: Function, useSelectors: Function, chart: {hide: Function, toggle: Function, isToggled: Function}}} */ GraphCardChartLegend.defaultProps = { chart: { diff --git a/src/components/graphCard/graphCardHelpers.js b/src/components/graphCard/graphCardHelpers.js index a529f4aa4..c5fee7881 100644 --- a/src/components/graphCard/graphCardHelpers.js +++ b/src/components/graphCard/graphCardHelpers.js @@ -364,7 +364,8 @@ const getMetricTotalCurrentOrLastData = helpers.memo( * * @param {object} params * @param {object} params.dataSet - * @param {boolean} params.isCurrent Is the current value the "current month". A proxy value passed through "graphCardMetricTotals" + * @param {boolean} params.isCurrent Is the current value the "current month". A proxy value passed through + * "graphCardMetricTotals" * @returns {{chartId: string, metricId: string, monthlyHasData: boolean, dailyValue: number, dailyDate: string, * monthlyValue: number, monthlyDate: string, dailyHasData: boolean}} */ @@ -416,7 +417,8 @@ const getPrepaidTallyCapacity = helpers.memo( * @param {object} params * @param {Array} params.capacityData * @param {Array} params.tallyData - * @param {boolean} params.isCurrent Is the current value the "current month". A proxy value passed through "graphCardMetricTotals" + * @param {boolean} params.isCurrent Is the current value the "current month". A proxy value passed + * through "graphCardMetricTotals" * @returns {{remainingCapacityHasData: boolean, remainingCapacity: number}} */ const getRemainingCapacity = helpers.memo( @@ -453,7 +455,8 @@ const getRemainingCapacity = helpers.memo( * @param {object} params * @param {Array} params.capacityData * @param {Array} params.tallyData - * @param {boolean} params.isCurrent Is the current value the "current month". A proxy value passed through "graphCardMetricTotals" + * @param {boolean} params.isCurrent Is the current value the "current month". A proxy value passed through + * "graphCardMetricTotals" * @returns {{remainingOverage: number, remainingOverageHasData: boolean}} */ const getRemainingOverage = helpers.memo( diff --git a/src/components/i18n/i18nHelpers.js b/src/components/i18n/i18nHelpers.js index 269fba1ab..6db35aa9d 100644 --- a/src/components/i18n/i18nHelpers.js +++ b/src/components/i18n/i18nHelpers.js @@ -171,7 +171,8 @@ const setI18nTestElement = ({ defaultTestId, testId }) => { * - A default string if the key can't be found. * - An object with i18next settings. i.e. "{ context: Array|string, testId: boolean|string|React.ReactNode }" * - An array of objects (key/value) pairs used to replace string tokens. i.e. "[{ hello: 'world' }]" - * @param {Array} components An array of HTML/React nodes used to replace string tokens. i.e. "[, ]" + * @param {Array} components An array of HTML/React nodes used to replace string tokens. + * i.e. "[, ]" * @param {object} settings * @param {*} settings.i18next * @param {Function} settings.isDebug diff --git a/src/components/inventoryCard/inventoryCardHelpers.js b/src/components/inventoryCard/inventoryCardHelpers.js index d0324ae3d..664a4e92d 100644 --- a/src/components/inventoryCard/inventoryCardHelpers.js +++ b/src/components/inventoryCard/inventoryCardHelpers.js @@ -71,6 +71,7 @@ const normalizeInventorySettings = ({ filters = [], guestFilters = [], settings }; // ToDo: evaluate moving isWrap logic under the table component helpers + // ToDo: evaluate a fallback "perPageDefault = 10" defined here /** * Parse an inventory API response against available filters, query parameters, and session values. @@ -83,7 +84,8 @@ const normalizeInventorySettings = ({ filters = [], guestFilters = [], settings * @param {object} params.query * @param {object} params.session * @param {object} params.settings - * @returns {{dataSetColumnHeaders: Array, resultsPerPage: number, resultsOffset: number, dataSetRows: Array, resultsCount: number}} + * @returns {{dataSetColumnHeaders: Array, resultsPerPage: number, resultsOffset: number, dataSetRows: Array, + * resultsCount: number}} */ const parseInventoryResponse = ({ data = {}, diff --git a/src/components/inventoryGuests/inventoryGuests.js b/src/components/inventoryGuests/inventoryGuests.js index 4acaa49a9..165b08b2c 100644 --- a/src/components/inventoryGuests/inventoryGuests.js +++ b/src/components/inventoryGuests/inventoryGuests.js @@ -41,8 +41,7 @@ const InventoryGuests = ({ const onScroll = useAliasOnScroll({ id, numberOfGuests }); - // ToDo: Review having the height be a calc value - // Include the table header + // ToDo: Review having the height be a calc value. Remember to include the table header let updatedHeight = (numberOfGuests + 1) * 42; updatedHeight = (updatedHeight < 275 && updatedHeight) || 275; diff --git a/src/components/messageView/messageView.js b/src/components/messageView/messageView.js index 21b82f310..5e9d1fb4a 100644 --- a/src/components/messageView/messageView.js +++ b/src/components/messageView/messageView.js @@ -47,7 +47,8 @@ const MessageView = ({ children, icon, message, pageTitle, title }) => ( /** * Prop types. * - * @type {{children: React.ReactNode, icon: React.ReactNode|Function, message: string, pageTitle: string, title: string}} + * @type {{children: React.ReactNode, icon: React.ReactNode|Function, message: string, pageTitle: string, + * title: string}} */ MessageView.propTypes = { children: PropTypes.node, diff --git a/src/components/optinView/optinView.js b/src/components/optinView/optinView.js index 659adab07..9a9f43ebd 100644 --- a/src/components/optinView/optinView.js +++ b/src/components/optinView/optinView.js @@ -202,7 +202,8 @@ const OptinView = ({ /** * Prop types. * - * @type {{useSession: Function, t: Function, updateAccountOptIn: Function, useDispatch: Function, useSelectorsResponse: Function}} + * @type {{useSession: Function, t: Function, updateAccountOptIn: Function, useDispatch: Function, + * useSelectorsResponse: Function}} */ OptinView.propTypes = { t: PropTypes.func, @@ -215,7 +216,8 @@ OptinView.propTypes = { /** * Default props. * - * @type {{useSession: Function, t: Function, updateAccountOptIn: Function, useDispatch: Function, useSelectorsResponse: Function}} + * @type {{useSession: Function, t: Function, updateAccountOptIn: Function, useDispatch: Function, + * useSelectorsResponse: Function}} */ OptinView.defaultProps = { t: translate, diff --git a/src/components/table/table.js b/src/components/table/table.js index db25a3197..2b4e632b3 100644 --- a/src/components/table/table.js +++ b/src/components/table/table.js @@ -413,9 +413,10 @@ const Table = ({ /** * Prop types * - * @type {{componentClassNames: object, summary: string, onSort: Function, onExpand: Function, className: string, isStriped: boolean, - * rows: Array, isBorders: boolean, ariaLabel: string, onSelect: Function, columnHeaders: Array, children: React.ReactNode, - * isHeader: boolean, variant: string, emptyTable: {className: string, title: React.ReactNode, message: React.ReactNode}}} + * @type {{componentClassNames: object, summary: string, onSort: Function, onExpand: Function, className: string, + * isStriped: boolean, rows: Array, isBorders: boolean, ariaLabel: string, onSelect: Function, columnHeaders: + * Array, children: React.ReactNode, isHeader: boolean, variant: string, emptyTable: {className: string, title: + * React.ReactNode, message: React.ReactNode}}} */ Table.propTypes = { ariaLabel: PropTypes.string, @@ -487,11 +488,12 @@ Table.propTypes = { /** * Default props * - * @type {{componentClassNames: {tdExpanded: string, trExpand: string, trExpandedContent: string, tdExpandedWrapper: string, - * tdAction: string, tdExpand: string, td: string, trExpanded: string, th: string, tdSelect: string, tdExpandedContent: string, - * table: string, tr: string}, summary: null, onSort: null, onExpand: null, className: string, isStriped: boolean, rows: any[], - * isBorders: boolean, ariaLabel: null, onSelect: null, columnHeaders: any[], children: null, isHeader: boolean, - * variant: TableVariant.compact, emptyTable: {title: string, message: string}}} + * @type {{componentClassNames: {tdExpanded: string, trExpand: string, trExpandedContent: string, + * tdExpandedWrapper: string, tdAction: string, tdExpand: string, td: string, trExpanded: string, th: string, + * tdSelect: string, tdExpandedContent: string, table: string, tr: string}, summary: null, onSort: null, onExpand: + * null, className: string, isStriped: boolean, rows: any[], isBorders: boolean, ariaLabel: null, onSelect: null, + * columnHeaders: any[], children: null, isHeader: boolean, variant: TableVariant.compact, emptyTable: {title: + * string, message: string}}} */ Table.defaultProps = { ariaLabel: null, diff --git a/src/components/table/tableHelpers.js b/src/components/table/tableHelpers.js index a335aca2b..c670aba6a 100644 --- a/src/components/table/tableHelpers.js +++ b/src/components/table/tableHelpers.js @@ -144,7 +144,8 @@ const tableHeader = ({ * @param {Function} params.onExpand * @param {Function} params.onSelect * @param {Array} params.rows - * @returns {{isExpandableCell: boolean, isSelectTable: boolean, isExpandableRow: boolean, isAllSelected: boolean, rows: any[]}} + * @returns {{isExpandableCell: boolean, isSelectTable: boolean, isExpandableRow: boolean, isAllSelected: boolean, + * rows: any[]}} */ const tableRows = ({ onExpand, onSelect, rows = [] } = {}) => { const updatedRows = []; diff --git a/src/components/toolbar/toolbar.js b/src/components/toolbar/toolbar.js index 9968fce9a..a3856fc28 100644 --- a/src/components/toolbar/toolbar.js +++ b/src/components/toolbar/toolbar.js @@ -160,9 +160,9 @@ const Toolbar = ({ /** * Prop types * - * @type {{useToolbarFieldClear: Function, t: Function, useSelectCategoryOptions: Function, hardFilterReset: boolean, - * useToolbarFields: Function, isGroupVariantDisabled: boolean, useProductToolbarQuery: Function, isDisabled: boolean, - * useToolbarFieldClearAll: Function}} + * @type {{useToolbarFieldClear: Function, t: Function, useSelectCategoryOptions: Function, + * hardFilterReset: boolean, useToolbarFields: Function, isGroupVariantDisabled: boolean, + * useProductToolbarQuery: Function, isDisabled: boolean, useToolbarFieldClearAll: Function}} */ Toolbar.propTypes = { hardFilterReset: PropTypes.bool, @@ -179,9 +179,9 @@ Toolbar.propTypes = { /** * Default props. * - * @type {{useToolbarFieldClear: Function, t: translate, useSelectCategoryOptions: Function, hardFilterReset: boolean, - * useToolbarFields: Function, isGroupVariantDisabled: boolean, useProductToolbarQuery: Function, isDisabled: boolean, - * useToolbarFieldClearAll: Function}} + * @type {{useToolbarFieldClear: Function, t: translate, useSelectCategoryOptions: Function, + * hardFilterReset: boolean, useToolbarFields: Function, isGroupVariantDisabled: boolean, + * useProductToolbarQuery: Function, isDisabled: boolean, useToolbarFieldClearAll: Function}} */ Toolbar.defaultProps = { hardFilterReset: false, diff --git a/src/config/README.md b/src/config/README.md index 56f7b7626..91b21a253 100644 --- a/src/config/README.md +++ b/src/config/README.md @@ -370,10 +370,13 @@ IIFE for generating a product configs listing via webpack. ### Products~sortedProductConfigs ⇒ Object Sorted/organized/grouped product configs. + - byAlias,object configurations associated with product aliases -- byAnything, object of all productGroups, productIds, productPaths, and aliases with lists of their related configurations +- byAnything, object of all productGroups, productIds, productPaths, and aliases with lists of their related + configurations - byAnythingPathIds, list of identifiers associated with all productGroups, productIds, productPaths, and aliases -- byAnythingVariants, object of all productGroups, productIds, productPaths, and aliases associated with lists of their related variants +- byAnythingVariants, object of all productGroups, productIds, productPaths, and aliases associated with lists + of their related variants - byGroupIdConfigs, object of productGroup properties against an array of associated product configs - byGroupIds, object of productGroup properties against an array of associated productId strings. - byGroupIdVariants, object of productGroup properties against an array of associated product variants @@ -381,8 +384,8 @@ Sorted/organized/grouped product configs. - byProductIds, a unique array of all productId strings - byProductPathConfigs, object of productPath properties against an array of associated product configs - byViewIdConfigs, object of viewId properties against an array of associated product configs -- byViewIds, object of viewId properties against an array of associated productId strings. "viewId" was created because of the - overlap with productIds and productGroups, this may be refactored in the future +- byViewIds, object of viewId properties against an array of associated productId strings. "viewId" was + created because of the overlap with productIds and productGroups, this may be refactored in the future **Kind**: inner constant of [Products](#Configuration.module_Products) diff --git a/src/config/product.openshiftContainer.js b/src/config/product.openshiftContainer.js index 01cb6dab2..95ca975b3 100644 --- a/src/config/product.openshiftContainer.js +++ b/src/config/product.openshiftContainer.js @@ -60,10 +60,12 @@ const productLabel = RHSM_API_PATH_PRODUCT_TYPES.OPENSHIFT; /** * Product configuration * - * @type {{productLabel: string, productPath: string, initialOption: string, aliases: string[], productId: string, inventorySubscriptionsQuery: object, - * query: object, initialSubscriptionsInventoryFilters: Array, initialInventorySettings: object, viewId: string, initialToolbarFilters: Array, - * productGroup: string, graphTallyQuery: object, inventoryHostsQuery: object, productDisplay: string, productContextFilterUom: boolean, - * initialGraphFilters: Array, initialGuestsFilters: Array, inventoryGuestsQuery: object, initialGraphSettings: object, initialInventoryFilters: Array}} + * @type {{productLabel: string, productPath: string, initialOption: string, aliases: string[], productId: string, + * inventorySubscriptionsQuery: object, query: object, initialSubscriptionsInventoryFilters: Array, + * initialInventorySettings: object, viewId: string, initialToolbarFilters: Array, productGroup: string, + * graphTallyQuery: object, inventoryHostsQuery: object, productDisplay: string, productContextFilterUom: boolean, + * initialGraphFilters: Array, initialGuestsFilters: Array, inventoryGuestsQuery: object, initialGraphSettings: + * object, initialInventoryFilters: Array}} */ const config = { aliases: [RHSM_API_PATH_PRODUCT_TYPES.OPENSHIFT, 'openshift-container', 'container', 'platform', 'shift'], diff --git a/src/config/product.openshiftDedicated.js b/src/config/product.openshiftDedicated.js index 3ff4873c4..74678c194 100644 --- a/src/config/product.openshiftDedicated.js +++ b/src/config/product.openshiftDedicated.js @@ -54,10 +54,11 @@ const productLabel = RHSM_API_PATH_PRODUCT_TYPES.OPENSHIFT_DEDICATED_METRICS; /** * Product configuration * - * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, query: object, initialInventorySettings: object, - * viewId: string, initialToolbarFilters: Array, productGroup: string, graphTallyQuery: object, inventoryHostsQuery: object, - * productDisplay: string, initialGraphFilters: Array, initialGuestsFilters: Array, inventoryGuestsQuery: object, - * initialGraphSettings: object, initialInventoryFilters: Array}} + * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, query: object, + * initialInventorySettings: object, viewId: string, initialToolbarFilters: Array, productGroup: string, + * graphTallyQuery: object, inventoryHostsQuery: object, productDisplay: string, initialGraphFilters: Array, + * initialGuestsFilters: Array, inventoryGuestsQuery: object, initialGraphSettings: object, + * initialInventoryFilters: Array}} */ const config = { aliases: ['openshift-dedicated', 'dedicated'], diff --git a/src/config/product.rhacs.js b/src/config/product.rhacs.js index c5f541f29..17f6a3465 100644 --- a/src/config/product.rhacs.js +++ b/src/config/product.rhacs.js @@ -55,10 +55,12 @@ const productLabel = RHSM_API_PATH_PRODUCT_TYPES.RHACS; /** * Product configuration * - * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, inventorySubscriptionsQuery: object, - * query: object, initialSubscriptionsInventoryFilters: Array, initialInventorySettings: object, viewId: string, - * initialToolbarFilters: Array, productGroup: string, graphTallyQuery: object, inventoryHostsQuery: object, - * productDisplay: string, initialGraphFilters: Array, initialGraphSettings: object, initialInventoryFilters: Array}} + * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, + * inventorySubscriptionsQuery: object, query: object, initialSubscriptionsInventoryFilters: Array, + * initialInventorySettings: object, viewId: string, initialToolbarFilters: Array, productGroup: string, + * graphTallyQuery: object, inventoryHostsQuery: object, productDisplay: string, initialGraphFilters: Array, + * initialGraphSettings: object, initialInventoryFilters: + * Array}} */ const config = { aliases: ['advanced', 'cluster', 'security', 'kubernetes', 'acs'], diff --git a/src/config/product.rhel.js b/src/config/product.rhel.js index cbc93347e..98a9e5f05 100644 --- a/src/config/product.rhel.js +++ b/src/config/product.rhel.js @@ -66,11 +66,12 @@ const productLabel = 'RHEL'; /** * RHEL product config * - * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, inventorySubscriptionsQuery: object, - * query: object, initialSubscriptionsInventoryFilters: Array, initialInventorySettings: object, viewId: string, - * initialToolbarFilters: Array, productGroup: string, graphTallyQuery: object, inventoryHostsQuery: object, productDisplay: string, - * productVariants: Array, initialGraphFilters: Array, initialGuestsFilters: Array, inventoryGuestsQuery: object, - * initialGraphSettings: object, initialInventoryFilters: Array}} + * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, + * inventorySubscriptionsQuery: object, query: object, initialSubscriptionsInventoryFilters: Array, + * initialInventorySettings: object, viewId: string, initialToolbarFilters: Array, productGroup: string, + * graphTallyQuery: object, inventoryHostsQuery: object, productDisplay: string, productVariants: Array, + * initialGraphFilters: Array, initialGuestsFilters: Array, inventoryGuestsQuery: object, initialGraphSettings: + * object, initialInventoryFilters: Array}} */ const config = { aliases: ['insights', 'enterprise', 'linux', 'el', 'x86', 'ibm', 'power'], diff --git a/src/config/product.rhods.js b/src/config/product.rhods.js index 4f4607d9f..ed43bcafc 100644 --- a/src/config/product.rhods.js +++ b/src/config/product.rhods.js @@ -55,10 +55,12 @@ const productLabel = RHSM_API_PATH_PRODUCT_TYPES.RHODS; /** * Product configuration * - * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, inventorySubscriptionsQuery: object, - * query: object, initialSubscriptionsInventoryFilters: Array, initialInventorySettings: object, viewId: string, - * initialToolbarFilters: Array, productGroup: string, graphTallyQuery: object, inventoryHostsQuery: object, - * productDisplay: string, initialGraphFilters: Array, initialGraphSettings: object, initialInventoryFilters: Array}} + * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, + * inventorySubscriptionsQuery: object, query: object, initialSubscriptionsInventoryFilters: Array, + * initialInventorySettings: object, viewId: string, initialToolbarFilters: Array, productGroup: string, + * graphTallyQuery: object, inventoryHostsQuery: object, productDisplay: string, initialGraphFilters: Array, + * initialGraphSettings: object, initialInventoryFilters: + * Array}} */ const config = { aliases: ['application-services', 'data', 'science', 'ods'], diff --git a/src/config/product.rosa.js b/src/config/product.rosa.js index a428f365a..0c6fe690d 100644 --- a/src/config/product.rosa.js +++ b/src/config/product.rosa.js @@ -57,11 +57,12 @@ const productLabel = RHSM_API_PATH_PRODUCT_TYPES.ROSA; /** * Product configuration * - * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, inventorySubscriptionsQuery: object, - * query: object, initialSubscriptionsInventoryFilters: Array, initialInventorySettings: object, viewId: string, - * initialToolbarFilters: Array, productGroup: string, graphTallyQuery: object, inventoryHostsQuery: object, - * productDisplay: string, initialGraphFilters: Array, initialGuestsFilters: Array, inventoryGuestsQuery: object, - * initialGraphSettings: object, initialInventoryFilters: Array}} + * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, + * inventorySubscriptionsQuery: object, query: object, initialSubscriptionsInventoryFilters: Array, + * initialInventorySettings: object, viewId: string, initialToolbarFilters: Array, productGroup: string, + * graphTallyQuery: object, inventoryHostsQuery: object, productDisplay: string, initialGraphFilters: Array, + * initialGuestsFilters: Array, inventoryGuestsQuery: object, initialGraphSettings: object, + * initialInventoryFilters: Array}} */ const config = { aliases: [], diff --git a/src/config/product.satellite.js b/src/config/product.satellite.js index 88f162e91..0d5084d76 100644 --- a/src/config/product.satellite.js +++ b/src/config/product.satellite.js @@ -57,10 +57,12 @@ const productLabel = 'Satellite'; /** * Product configuration * - * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, inventorySubscriptionsQuery: object, - * initialInventorySettings: object, viewId: string, initialToolbarFilters: Array, productGroup: string, graphTallyQuery: object, - * inventoryHostsQuery: object, productDisplay: string, productVariants: Array, initialGraphFilters: Array, - * initialGuestsFilters: Array, inventoryGuestsQuery: object, initialGraphSettings: object, initialInventoryFilters: Array}} + * @type {{productLabel: string, productPath: string, aliases: string[], productId: string, + * inventorySubscriptionsQuery: object, initialInventorySettings: object, viewId: string, initialToolbarFilters: + * Array, productGroup: string, graphTallyQuery: object, inventoryHostsQuery: object, productDisplay: string, + * productVariants: Array, initialGraphFilters: Array, initialGuestsFilters: Array, inventoryGuestsQuery: object, + * initialGraphSettings: object, initialInventoryFilters: + * Array}} */ const config = { aliases: ['sat', 'server', 'capsule'], diff --git a/src/config/products.js b/src/config/products.js index e5b48f24f..848c2fdea 100644 --- a/src/config/products.js +++ b/src/config/products.js @@ -45,10 +45,13 @@ const productConfigs = (() => { /** * Sorted/organized/grouped product configs. + * * - byAlias,object configurations associated with product aliases - * - byAnything, object of all productGroups, productIds, productPaths, and aliases with lists of their related configurations + * - byAnything, object of all productGroups, productIds, productPaths, and aliases with lists of their related + * configurations * - byAnythingPathIds, list of identifiers associated with all productGroups, productIds, productPaths, and aliases - * - byAnythingVariants, object of all productGroups, productIds, productPaths, and aliases associated with lists of their related variants + * - byAnythingVariants, object of all productGroups, productIds, productPaths, and aliases associated with lists + * of their related variants * - byGroupIdConfigs, object of productGroup properties against an array of associated product configs * - byGroupIds, object of productGroup properties against an array of associated productId strings. * - byGroupIdVariants, object of productGroup properties against an array of associated product variants @@ -56,8 +59,8 @@ const productConfigs = (() => { * - byProductIds, a unique array of all productId strings * - byProductPathConfigs, object of productPath properties against an array of associated product configs * - byViewIdConfigs, object of viewId properties against an array of associated product configs - * - byViewIds, object of viewId properties against an array of associated productId strings. "viewId" was created because of the - * overlap with productIds and productGroups, this may be refactored in the future + * - byViewIds, object of viewId properties against an array of associated productId strings. "viewId" was + * created because of the overlap with productIds and productGroups, this may be refactored in the future * * @param {productConfigs} configs * @returns {{byGroupIdVariants: {}, byProductPathConfigs: {}, byAnythingVariants: {}, byAnything: {}, diff --git a/src/redux/README.md b/src/redux/README.md index 699533318..d2994f57d 100644 --- a/src/redux/README.md +++ b/src/redux/README.md @@ -187,7 +187,8 @@ Get a RHSM response from multiple Tally, or Capacity, IDs and metrics. - diff --git a/src/redux/actions/rhsmActions.js b/src/redux/actions/rhsmActions.js index dfadb3c92..d50f3f03b 100644 --- a/src/redux/actions/rhsmActions.js +++ b/src/redux/actions/rhsmActions.js @@ -12,7 +12,8 @@ import { generateChartIds } from '../../components/graphCard/graphCardHelpers'; /** * Get a RHSM response from multiple Tally, or Capacity, IDs and metrics. * - * @param {object|Array} idMetric An object, or an Array of objects, in the form of { id: PRODUCT_ID, metric: METRIC_ID, isCapacity: boolean } + * @param {object|Array} idMetric An object, or an Array of objects, in the form of { id: PRODUCT_ID, metric: METRIC_ID, + * isCapacity: boolean } * @param {object} query * @param {object} options * @param {string} options.cancelId diff --git a/src/redux/types/rhsmTypes.js b/src/redux/types/rhsmTypes.js index 3caeac505..215160c24 100644 --- a/src/redux/types/rhsmTypes.js +++ b/src/redux/types/rhsmTypes.js @@ -13,8 +13,9 @@ const GET_SUBSCRIPTIONS_INVENTORY_RHSM = 'GET_SUBSCRIPTIONS_INVENTORY_RHSM'; /** * RHSM API action, reducer types. * - * @type {{GET_GRAPH_REPORT_CAPACITY_RHSM: string, GET_GRAPH_CAPACITY_RHSM: string, GET_INSTANCES_INVENTORY_GUESTS_RHSM: string, - * GET_SUBSCRIPTIONS_INVENTORY_RHSM: string, GET_INSTANCES_INVENTORY_RHSM: string, GET_GRAPH_TALLY_RHSM: string}} + * @type {{GET_GRAPH_REPORT_CAPACITY_RHSM: string, GET_GRAPH_CAPACITY_RHSM: string, GET_INSTANCES_INVENTORY_GUESTS_RHSM: + * string, GET_SUBSCRIPTIONS_INVENTORY_RHSM: string, GET_INSTANCES_INVENTORY_RHSM: string, GET_GRAPH_TALLY_RHSM: + * string}} */ const rhsmTypes = { GET_GRAPH_CAPACITY_RHSM, diff --git a/src/services/README.md b/src/services/README.md index aa07b783d..f883c7e6c 100644 --- a/src/services/README.md +++ b/src/services/README.md @@ -809,6 +809,7 @@ RHSM API service calls. * [RhsmServices](#Rhsm.module_RhsmServices) * [~getApiVersion(options)](#Rhsm.module_RhsmServices..getApiVersion) ⇒ Promise.<\*> + * [~getGraphTally(id, params, options)](#Rhsm.module_RhsmServices..getGraphTally) ⇒ Promise.<\*> * [~getGraphCapacity(id, params, options)](#Rhsm.module_RhsmServices..getGraphCapacity) ⇒ Promise.<\*> * [~getInstancesInventoryGuests(id, params, options)](#Rhsm.module_RhsmServices..getInstancesInventoryGuests) ⇒ Promise.<\*> * [~getInstancesInventory(id, params, options)](#Rhsm.module_RhsmServices..getInstancesInventory) ⇒ Promise.<\*> @@ -836,6 +837,44 @@ Get RHSM API version information.
idMetricobject | Array

An object, or an Array of objects, in the form of { id: PRODUCT_ID, metric: METRIC_ID, isCapacity: boolean }

+
idMetricobject | Array

An object, or an Array of objects, in the form of { id: PRODUCT_ID, metric: METRIC_ID, + isCapacity: boolean }

queryobject
+ + +### RhsmServices~getGraphTally(id, params, options) ⇒ Promise.<\*> +Get RHSM API reporting/tally graph/chart data. + +**Kind**: inner method of [RhsmServices](#Rhsm.module_RhsmServices) + + + + + + + + + + + + + + + + + + + + + + + + +
ParamTypeDescription
idstring | Array

String ID, or an array of identifiers to update a dotenv url path

+
paramsobject

Query/search params

+
optionsobject
options.cacheboolean
options.cancelboolean
options.cancelIdstring
options.schemaArray

An array of callbacks used to transform the response, + ie. [SUCCESS SCHEMA, ERROR SCHEMA]

+
options.transformArray

An array of callbacks used to transform the response, + ie. [SUCCESS TRANSFORM, ERROR TRANSFORM]

+
+ ### RhsmServices~getGraphCapacity(id, params, options) ⇒ Promise.<\*> @@ -892,10 +931,12 @@ Get RHSM API instances table/inventory guests data. options.cancelIdstring - options.schemaArray

An array of callbacks used to transform the response, ie. [SUCCESS SCHEMA, ERROR SCHEMA]

+ options.schemaArray

An array of callbacks used to transform the response, + ie. [SUCCESS SCHEMA, ERROR SCHEMA]

- options.transformArray

An array of callbacks used to transform the response, ie. [SUCCESS TRANSFORM, ERROR TRANSFORM]

+ options.transformArray

An array of callbacks used to transform the response, + ie. [SUCCESS TRANSFORM, ERROR TRANSFORM]

@@ -928,10 +969,12 @@ Get RHSM API instances data. options.cancelIdstring - options.schemaArray

An array of callbacks used to transform the response, ie. [SUCCESS SCHEMA, ERROR SCHEMA]

+ options.schemaArray

An array of callbacks used to transform the response, + ie. [SUCCESS SCHEMA, ERROR SCHEMA]

- options.transformArray

An array of callbacks used to transform the response, ie. [SUCCESS TRANSFORM, ERROR TRANSFORM]

+ options.transformArray

An array of callbacks used to transform the response, + ie. [SUCCESS TRANSFORM, ERROR TRANSFORM]

@@ -964,10 +1007,12 @@ Get RHSM API subscriptions data. options.cancelIdstring - options.schemaArray

An array of callbacks used to transform the response, ie. [SUCCESS SCHEMA, ERROR SCHEMA]

+ options.schemaArray

An array of callbacks used to transform the response, + ie. [SUCCESS SCHEMA, ERROR SCHEMA]

- options.transformArray

An array of callbacks used to transform the response, ie. [SUCCESS TRANSFORM, ERROR TRANSFORM]

+ options.transformArray

An array of callbacks used to transform the response, + ie. [SUCCESS TRANSFORM, ERROR TRANSFORM]

@@ -1041,10 +1086,10 @@ Parse RHSM guests instances response. Return an infinite list at the transformer ### RhsmTransformers~rhsmSubscriptions(response, config) ⇒ object Parse RHSM subscriptions response for caching. -The Subscriptions' response "meta" includes the uom field if it is included within the query parameters. We attempt to -normalize this for both casing, similar to the Instances meta response, BUT we also add a concatenated string uom for responses -without the uom query parameter in the form of "Sockets", "Sockets-Cores", or "Cores", dependent on the returned response -data. +The Subscriptions' response "meta" includes the uom field if it is included within the query parameters. We +attempt to normalize this for both casing, similar to the Instances meta response, BUT we also add a +concatenated string uom for responses without the uom query parameter in the form of "Sockets", "Sockets-Cores", +or "Cores", dependent on the returned response data. **Kind**: inner method of [RhsmTransformers](#Rhsm.module_RhsmTransformers) diff --git a/src/services/common/__tests__/serviceConfig.test.js b/src/services/common/__tests__/serviceConfig.test.js index b28d5a1c0..d6f319180 100644 --- a/src/services/common/__tests__/serviceConfig.test.js +++ b/src/services/common/__tests__/serviceConfig.test.js @@ -172,7 +172,7 @@ describe('ServiceConfig', () => { it('should handle transforming service call responses', async () => { const responses = []; - // First, use the schema transform - alias for transform, but relates a sequence and happens before other transformations. + // First, since it happens before other transformations, use the schema transform const responseOne = await serviceConfig.axiosServiceCall({ cache: true, url: '/test/', diff --git a/src/services/rhsm/rhsmConstants.js b/src/services/rhsm/rhsmConstants.js index 8f0fa8018..f956e2dc2 100644 --- a/src/services/rhsm/rhsmConstants.js +++ b/src/services/rhsm/rhsmConstants.js @@ -36,9 +36,10 @@ const RHSM_API_PATH_PRODUCT_VARIANT_SATELLITE_TYPES = { * dissimilar graph and inventory displays. Force grouped product ids are grouped with the * [product configuration property "productGroup"]{@link ../config/}, i.e. OpenShift et all. * - * @type {{RHEL_ARM: string, OPENSHIFT_METRICS: string, RHEL_WORKSTATION: string, RHODS: string, ROSA: string, RHEL_X86: string, - * RHEL_COMPUTE_NODE: string, OPENSHIFT: string, SATELLITE_SERVER: string, OPENSHIFT_DEDICATED_METRICS: string, - * SATELLITE_CAPSULE: string, RHEL_IBM_Z: string, RHEL_IBM_POWER: string, RHACS: string}} + * @type {{RHEL_ARM: string, OPENSHIFT_METRICS: string, RHEL_WORKSTATION: string, RHODS: string, ROSA: string, + * RHEL_X86: string, RHEL_COMPUTE_NODE: string, OPENSHIFT: string, SATELLITE_SERVER: string, + * OPENSHIFT_DEDICATED_METRICS: string, SATELLITE_CAPSULE: string, RHEL_IBM_Z: string, RHEL_IBM_POWER: string, + * RHACS: string}} */ const RHSM_API_PATH_PRODUCT_TYPES = { ...RHSM_API_PATH_PRODUCT_VARIANT_RHEL_TYPES, @@ -123,9 +124,9 @@ const RHSM_API_RESPONSE_ERRORS_CODE_TYPES = { * RHSM combined response Instance and Instance Guests DATA types. * "INSTANCE_ID" and "SUBSCRIPTION_MANAGER_ID" are associated with instance guests. * - * @type {{MEASUREMENTS: string, BILLING_ACCOUNT_ID: string, CATEGORY: string, SUBSCRIPTION_MANAGER_ID: string, - * INVENTORY_ID: string, NUMBER_OF_GUESTS: string, BILLING_PROVIDER: string, DISPLAY_NAME: string, CLOUD_PROVIDER: string, - * INSTANCE_ID: string, LAST_SEEN: string}} + * @type {{MEASUREMENTS: string, BILLING_ACCOUNT_ID: string, CATEGORY: string, + * SUBSCRIPTION_MANAGER_ID: string, INVENTORY_ID: string, NUMBER_OF_GUESTS: string, BILLING_PROVIDER: string, + * DISPLAY_NAME: string, CLOUD_PROVIDER: string, INSTANCE_ID: string, LAST_SEEN: string}} */ const RHSM_API_RESPONSE_INSTANCES_DATA_TYPES = { BILLING_PROVIDER: 'billing_provider', @@ -155,10 +156,10 @@ const RHSM_API_RESPONSE_INSTANCES_META_TYPES = { /** * RHSM response Subscriptions DATA types. * - * @type {{BILLING_ACCOUNT_ID: string, QUANTITY: string, SUBSCRIPTION_MANAGER_ID: string, INVENTORY_ID: string, - * NUMBER_OF_GUESTS: string, HAS_INFINITE_QUANTITY: string, TOTAL_CAPACITY: string, PRODUCT_NAME: string, - * SERVICE_LEVEL: string, DISPLAY_NAME: string, MEASUREMENTS: string, UOM: string, CATEGORY: string, - * NEXT_EVENT_DATE: string, BILLING_PROVIDER: string, LAST_SEEN: string}} + * @type {{BILLING_ACCOUNT_ID: string, QUANTITY: string, SUBSCRIPTION_MANAGER_ID: string, + * INVENTORY_ID: string, NUMBER_OF_GUESTS: string, HAS_INFINITE_QUANTITY: string, TOTAL_CAPACITY: string, + * PRODUCT_NAME: string, SERVICE_LEVEL: string, DISPLAY_NAME: string, MEASUREMENTS: string, UOM: string, CATEGORY: + * string, NEXT_EVENT_DATE: string, BILLING_PROVIDER: string, LAST_SEEN: string}} */ const RHSM_API_RESPONSE_SUBSCRIPTIONS_DATA_TYPES = { ...RHSM_API_RESPONSE_INSTANCES_DATA_TYPES, @@ -354,9 +355,9 @@ const RHSM_API_QUERY_USAGE_TYPES = RHSM_API_RESPONSE_USAGE_TYPES; /** * RHSM API query/search parameter INVENTORY type values. * - * @type {{BILLING_ACCOUNT_ID: string, DIRECTION: string, END_DATE: string, SLA: string, LIMIT: string, START_DATE: string, - * DISPLAY_NAME: string, UOM: string, USAGE: string, CATEGORY: string, SORT: string, OFFSET: string, - * BILLING_PROVIDER: string}} + * @type {{BILLING_ACCOUNT_ID: string, DIRECTION: string, END_DATE: string, SLA: string, LIMIT: string, + * START_DATE: string, DISPLAY_NAME: string, UOM: string, USAGE: string, CATEGORY: string, SORT: string, + * OFFSET: string, BILLING_PROVIDER: string}} */ const RHSM_API_QUERY_SET_INVENTORY_TYPES = { BILLING_PROVIDER: 'billing_provider', @@ -422,50 +423,56 @@ const RHSM_INTERNAL_PRODUCT_DISPLAY_TYPES = { /** * RHSM constants. * - * @type {{RHSM_API_QUERY_SET_TALLY_CAPACITY_TYPES: {GRANULARITY: string, USAGE: string, CATEGORY: string, END_DATE: string, SLA: string, - * START_DATE: string, BILLING_PROVIDER: string, USE_RUNNING_TOTALS_FORMAT: string, BILLING_CATEGORY: string}, - * RHSM_API_RESPONSE_DATA: string, RHSM_API_RESPONSE_SUBSCRIPTIONS_META_TYPES: {PRODUCT: string, SUBSCRIPTION_TYPE: string, COUNT: string}, - * RHSM_API_PATH_PRODUCT_VARIANT_SATELLITE_TYPES: {SATELLITE_SERVER: string, SATELLITE_CAPSULE: string}, - * RHSM_API_PATH_METRIC_TYPES: {CORES: string, STORAGE_GIBIBYTES: string, SOCKETS: string, INSTANCE_HOURS: string, - * TRANSFER_GIBIBYTES: string, CORE_SECONDS: string, STORAGE_GIBIBYTE_MONTHS: string}, - * RHSM_API_RESPONSE_INSTANCES_META_TYPES: {MEASUREMENTS: string, UOM: string, PRODUCT: string, COUNT: string}, - * RHSM_API_RESPONSE_INSTANCES_DATA_TYPES: {MEASUREMENTS: string, BILLING_ACCOUNT_ID: string, CATEGORY: string, - * SUBSCRIPTION_MANAGER_ID: string, INVENTORY_ID: string, NUMBER_OF_GUESTS: string, BILLING_PROVIDER: string, DISPLAY_NAME: string, - * CLOUD_PROVIDER: string, INSTANCE_ID: string, LAST_SEEN: string}, RHSM_API_RESPONSE_SLA_TYPES: {PREMIUM: string, SELF: string, - * NONE: string, STANDARD: string}, RHSM_API_RESPONSE_META_TYPES: {PRODUCT: string, COUNT: string}, - * RHSM_API_RESPONSE_ERRORS_CODE_TYPES: {GENERIC: string, OPTIN: string}, RHSM_API_QUERY_GRANULARITY_TYPES: {WEEKLY: string, - * QUARTERLY: string, DAILY: string, MONTHLY: string}, RHSM_API_RESPONSE_UOM_TYPES: {CORES: string, SOCKETS: string}, - * RHSM_API_PATH_PRODUCT_VARIANT_RHEL_TYPES: {RHEL_ARM: string, RHEL_X86_SAP: string, RHEL_IBM_Z: string, RHEL_IBM_POWER: string, - * RHEL_X86: string}, RHSM_API_RESPONSE_SUBSCRIPTIONS_DATA_TYPES: {BILLING_ACCOUNT_ID: string, QUANTITY: string, - * SUBSCRIPTION_MANAGER_ID: string, INVENTORY_ID: string, NUMBER_OF_GUESTS: string, HAS_INFINITE_QUANTITY: string, TOTAL_CAPACITY: string, - * PRODUCT_NAME: string, SERVICE_LEVEL: string, DISPLAY_NAME: string, MEASUREMENTS: string, UOM: string, CATEGORY: string, - * NEXT_EVENT_DATE: string, BILLING_PROVIDER: string, LAST_SEEN: string}, RHSM_API_QUERY_INVENTORY_SORT_DIRECTION_TYPES: {ASCENDING: string, + * @type {{RHSM_API_QUERY_SET_TALLY_CAPACITY_TYPES: {GRANULARITY: string, USAGE: string, CATEGORY: string, + * END_DATE: string, SLA: string, START_DATE: string, BILLING_PROVIDER: string, USE_RUNNING_TOTALS_FORMAT: string, + * BILLING_CATEGORY: string}, RHSM_API_RESPONSE_DATA: string, RHSM_API_RESPONSE_SUBSCRIPTIONS_META_TYPES: {PRODUCT: + * string, SUBSCRIPTION_TYPE: string, COUNT: string}, RHSM_API_PATH_PRODUCT_VARIANT_SATELLITE_TYPES: + * {SATELLITE_SERVER: string, SATELLITE_CAPSULE: string}, RHSM_API_PATH_METRIC_TYPES: {CORES: string, + * STORAGE_GIBIBYTES: string, SOCKETS: string, INSTANCE_HOURS: string, TRANSFER_GIBIBYTES: string, CORE_SECONDS: + * string, STORAGE_GIBIBYTE_MONTHS: string}, RHSM_API_RESPONSE_INSTANCES_META_TYPES: {MEASUREMENTS: string, UOM: + * string, PRODUCT: string, COUNT: string}, RHSM_API_RESPONSE_INSTANCES_DATA_TYPES: {MEASUREMENTS: string, + * BILLING_ACCOUNT_ID: string, CATEGORY: string, SUBSCRIPTION_MANAGER_ID: string, INVENTORY_ID: string, + * NUMBER_OF_GUESTS: string, BILLING_PROVIDER: string, DISPLAY_NAME: string, CLOUD_PROVIDER: string, INSTANCE_ID: + * string, LAST_SEEN: string}, RHSM_API_RESPONSE_SLA_TYPES: {PREMIUM: string, SELF: string, NONE: string, STANDARD: + * string}, RHSM_API_RESPONSE_META_TYPES: {PRODUCT: string, COUNT: string}, RHSM_API_RESPONSE_ERRORS_CODE_TYPES: + * {GENERIC: string, OPTIN: string}, RHSM_API_QUERY_GRANULARITY_TYPES: {WEEKLY: string, QUARTERLY: string, DAILY: + * string, MONTHLY: string}, RHSM_API_RESPONSE_UOM_TYPES: {CORES: string, SOCKETS: string}, + * RHSM_API_PATH_PRODUCT_VARIANT_RHEL_TYPES: {RHEL_ARM: string, RHEL_X86_SAP: string, RHEL_IBM_Z: string, + * RHEL_IBM_POWER: string, RHEL_X86: string}, RHSM_API_RESPONSE_SUBSCRIPTIONS_DATA_TYPES: {BILLING_ACCOUNT_ID: + * string, QUANTITY: string, SUBSCRIPTION_MANAGER_ID: string, INVENTORY_ID: string, NUMBER_OF_GUESTS: string, + * HAS_INFINITE_QUANTITY: string, TOTAL_CAPACITY: string, PRODUCT_NAME: string, SERVICE_LEVEL: string, + * DISPLAY_NAME: string, MEASUREMENTS: string, UOM: string, CATEGORY: string, NEXT_EVENT_DATE: string, + * BILLING_PROVIDER: string, LAST_SEEN: string}, RHSM_API_QUERY_INVENTORY_SORT_DIRECTION_TYPES: {ASCENDING: string, * DESCENDING: string}, RHSM_API_RESPONSE_SUBSCRIPTION_TYPES: {ANNUAL: string, ON_DEMAND: string}, - * RHSM_API_QUERY_INVENTORY_SORT_TYPES: {CORES: string, STORAGE_GIBIBYTES: string, CATEGORY: string, SOCKETS: string, - * INSTANCE_HOURS: string, NUMBER_OF_GUESTS: string, TRANSFER_GIBIBYTES: string, BILLING_PROVIDER: string, CORE_SECONDS: string, - * STORAGE_GIBIBYTE_MONTHS: string, LAST_SEEN: string, NAME: string}, RHSM_API_PATH_PRODUCT_TYPES: {RHEL_ARM: string, - * OPENSHIFT_METRICS: string, RHEL_WORKSTATION: string, RHODS: string, ROSA: string, RHEL_X86: string, RHEL_COMPUTE_NODE: string, - * OPENSHIFT: string, SATELLITE_SERVER: string, OPENSHIFT_DEDICATED_METRICS: string, SATELLITE_CAPSULE: string, RHEL_IBM_Z: string, - * RHEL_IBM_POWER: string, RHACS: string}, RHSM_API_RESPONSE_BILLING_PROVIDER_TYPES: {AZURE: string, GCP: string, RED_HAT: string, - * NONE: string, AWS: string, ORACLE: string}, RHSM_API_RESPONSE_ERRORS_TYPES: {CODE: string}, - * RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES: {DATE: string, HAS_DATA: string, VALUE: string, HAS_INFINITE_QUANTITY: string}, - * RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES: {TOTAL_MONTHLY: string, DATE: string, PRODUCT: string, HAS_CLOUDIGRADE_DATA: string, - * HAS_CLOUDIGRADE_MISMATCH: string, HAS_DATA: string, METRIC_ID: string, COUNT: string, VALUE: string}, - * RHSM_API_QUERY_BILLING_PROVIDER_TYPES: {AZURE: string, GCP: string, RED_HAT: string, NONE: string, AWS: string, ORACLE: string}, - * RHSM_API_QUERY_CATEGORY_TYPES: {CLOUD: string, PHYSICAL: string, ON_DEMAND: string, HYPERVISOR: string, PREPAID: string, - * VIRTUAL: string}, RHSM_API_QUERY_USAGE_TYPES: {UNSPECIFIED: string, DISASTER: string, DEVELOPMENT: string, PRODUCTION: string}, + * RHSM_API_QUERY_INVENTORY_SORT_TYPES: {CORES: string, STORAGE_GIBIBYTES: string, CATEGORY: string, SOCKETS: + * string, INSTANCE_HOURS: string, NUMBER_OF_GUESTS: string, TRANSFER_GIBIBYTES: string, BILLING_PROVIDER: string, + * CORE_SECONDS: string, STORAGE_GIBIBYTE_MONTHS: string, LAST_SEEN: string, NAME: string}, + * RHSM_API_PATH_PRODUCT_TYPES: {RHEL_ARM: string, OPENSHIFT_METRICS: string, RHEL_WORKSTATION: string, RHODS: + * string, ROSA: string, RHEL_X86: string, RHEL_COMPUTE_NODE: string, OPENSHIFT: string, SATELLITE_SERVER: string, + * OPENSHIFT_DEDICATED_METRICS: string, SATELLITE_CAPSULE: string, RHEL_IBM_Z: string, RHEL_IBM_POWER: string, + * RHACS: string}, RHSM_API_RESPONSE_BILLING_PROVIDER_TYPES: {AZURE: string, GCP: string, RED_HAT: string, NONE: + * string, AWS: string, ORACLE: string}, RHSM_API_RESPONSE_ERRORS_TYPES: {CODE: string}, + * RHSM_API_RESPONSE_TALLY_CAPACITY_DATA_TYPES: {DATE: string, HAS_DATA: string, VALUE: string, + * HAS_INFINITE_QUANTITY: string}, RHSM_API_RESPONSE_TALLY_CAPACITY_META_TYPES: {TOTAL_MONTHLY: string, DATE: + * string, PRODUCT: string, HAS_CLOUDIGRADE_DATA: string, HAS_CLOUDIGRADE_MISMATCH: string, HAS_DATA: string, + * METRIC_ID: string, COUNT: string, VALUE: string}, RHSM_API_QUERY_BILLING_PROVIDER_TYPES: {AZURE: string, GCP: + * string, RED_HAT: string, NONE: string, AWS: string, ORACLE: string}, RHSM_API_QUERY_CATEGORY_TYPES: {CLOUD: + * string, PHYSICAL: string, ON_DEMAND: string, HYPERVISOR: string, PREPAID: string, VIRTUAL: string}, + * RHSM_API_QUERY_USAGE_TYPES: {UNSPECIFIED: string, DISASTER: string, DEVELOPMENT: string, PRODUCTION: string}, * RHSM_API_QUERY_SLA_TYPES: {PREMIUM: string, SELF: string, NONE: string, STANDARD: string}, - * RHSM_API_QUERY_SET_INVENTORY_TYPES: {BILLING_ACCOUNT_ID: string, DIRECTION: string, END_DATE: string, SLA: string, LIMIT: string, - * START_DATE: string, DISPLAY_NAME: string, UOM: string, USAGE: string, CATEGORY: string, SORT: string, OFFSET: string, - * BILLING_PROVIDER: string}, RHSM_API_RESPONSE_ERRORS: string, RHSM_API_QUERY_UOM_TYPES: {CORES: string, SOCKETS: string}, - * RHSM_API_RESPONSE_META: string, RHSM_API_RESPONSE_GRANULARITY_TYPES: {WEEKLY: string, QUARTERLY: string, DAILY: string, - * MONTHLY: string}, RHSM_API_QUERY_SET_TYPES: {GRANULARITY: string, BILLING_ACCOUNT_ID: string, DIRECTION: string, END_DATE: string, - * SLA: string, LIMIT: string, START_DATE: string, DISPLAY_NAME: string, USE_RUNNING_TOTALS_FORMAT: string, BILLING_CATEGORY: string, - * UOM: string, USAGE: string, CATEGORY: string, SORT: string, OFFSET: string, BILLING_PROVIDER: string}, - * RHSM_API_QUERY_INVENTORY_SUBSCRIPTIONS_SORT_TYPES: {QUANTITY: string, USAGE: string, NEXT_EVENT_TYPE: string, - * NEXT_EVENT_DATE: string, TOTAL_CAPACITY: string, PRODUCT_NAME: string, SKU: string, SERVICE_LEVEL: string}, - * RHSM_INTERNAL_PRODUCT_DISPLAY_TYPES: {CAPACITY: string, LEGACY: string, DUAL_AXES: string, PARTIAL: string, HOURLY: string}, - * RHSM_API_RESPONSE_USAGE_TYPES: {UNSPECIFIED: string, DISASTER: string, DEVELOPMENT: string, PRODUCTION: string}}} + * RHSM_API_QUERY_SET_INVENTORY_TYPES: {BILLING_ACCOUNT_ID: string, DIRECTION: string, END_DATE: string, SLA: + * string, LIMIT: string, START_DATE: string, DISPLAY_NAME: string, UOM: string, USAGE: string, CATEGORY: string, + * SORT: string, OFFSET: string, BILLING_PROVIDER: string}, RHSM_API_RESPONSE_ERRORS: string, + * RHSM_API_QUERY_UOM_TYPES: {CORES: string, SOCKETS: string}, RHSM_API_RESPONSE_META: string, + * RHSM_API_RESPONSE_GRANULARITY_TYPES: {WEEKLY: string, QUARTERLY: string, DAILY: string, MONTHLY: string}, + * RHSM_API_QUERY_SET_TYPES: {GRANULARITY: string, BILLING_ACCOUNT_ID: string, DIRECTION: string, END_DATE: string, + * SLA: string, LIMIT: string, START_DATE: string, DISPLAY_NAME: string, USE_RUNNING_TOTALS_FORMAT: string, + * BILLING_CATEGORY: string, UOM: string, USAGE: string, CATEGORY: string, SORT: string, OFFSET: string, + * BILLING_PROVIDER: string}, RHSM_API_QUERY_INVENTORY_SUBSCRIPTIONS_SORT_TYPES: {QUANTITY: string, USAGE: string, + * NEXT_EVENT_TYPE: string, NEXT_EVENT_DATE: string, TOTAL_CAPACITY: string, PRODUCT_NAME: string, SKU: string, + * SERVICE_LEVEL: string}, RHSM_INTERNAL_PRODUCT_DISPLAY_TYPES: {CAPACITY: string, LEGACY: string, DUAL_AXES: + * string, PARTIAL: string, HOURLY: string}, RHSM_API_RESPONSE_USAGE_TYPES: {UNSPECIFIED: string, DISASTER: string, + * DEVELOPMENT: string, PRODUCTION: string}}} */ const rhsmConstants = { RHSM_API_PATH_PRODUCT_TYPES, diff --git a/src/services/rhsm/rhsmServices.js b/src/services/rhsm/rhsmServices.js index 022704bb1..658c3f06e 100644 --- a/src/services/rhsm/rhsmServices.js +++ b/src/services/rhsm/rhsmServices.js @@ -1186,7 +1186,8 @@ const getApiVersion = (options = {}) => { * ] * } */ -/* Get RHSM API reporting/tally graph/chart data. +/** + * Get RHSM API reporting/tally graph/chart data. * * @param {string|Array} id String ID, or an array of identifiers to update a dotenv url path * @param {object} params Query/search params @@ -1194,8 +1195,10 @@ const getApiVersion = (options = {}) => { * @param {boolean} options.cache * @param {boolean} options.cancel * @param {string} options.cancelId - * @param {Array} options.schema An array of callbacks used to transform the response, ie. [SUCCESS SCHEMA, ERROR SCHEMA] - * @param {Array} options.transform An array of callbacks used to transform the response, ie. [SUCCESS TRANSFORM, ERROR TRANSFORM] + * @param {Array} options.schema An array of callbacks used to transform the response, + * ie. [SUCCESS SCHEMA, ERROR SCHEMA] + * @param {Array} options.transform An array of callbacks used to transform the response, + * ie. [SUCCESS TRANSFORM, ERROR TRANSFORM] * @returns {Promise<*>} */ const getGraphTally = (id, params = {}, options = {}) => { @@ -1225,7 +1228,7 @@ const getGraphTally = (id, params = {}, options = {}) => { }; /** - * @api {get} /api/rhsm-subscriptions/v1/capacity/products/:product_id/:metric_id Get RHSM graph capacity data, i.e. thresholds + * @api {get} /api/rhsm-subscriptions/v1/capacity/products/:product_id/:metric_id Get RHSM graph capacity data * @apiDescription Retrieve graph capacity data, such as thresholds. * * Reference [RHSM for capacity params and commands](https://github.com/RedHatInsights/rhsm-subscriptions/blob/main/api/rhsm-subscriptions-api-spec.yaml) @@ -1510,7 +1513,7 @@ const getGraphCapacity = (id, params = {}, options = {}) => { /** * @apiMock {DelayResponse} 250 - * @api {get} /api/rhsm-subscriptions/v1/instances/:instance_id/guests Get RHSM instances/systems table/inventory guests data + * @api {get} /api/rhsm-subscriptions/v1/instances/:instance_id/guests Get RHSM instances/systems inventory guests data * @apiDescription Retrieve instances/systems table/inventory guests data. * * Reference [RHSM for instances guests](https://github.com/RedHatInsights/rhsm-subscriptions/blob/main/api/rhsm-subscriptions-api-spec.yaml) @@ -1624,8 +1627,10 @@ const getGraphCapacity = (id, params = {}, options = {}) => { * @param {boolean} options.cache * @param {boolean} options.cancel * @param {string} options.cancelId - * @param {Array} options.schema An array of callbacks used to transform the response, ie. [SUCCESS SCHEMA, ERROR SCHEMA] - * @param {Array} options.transform An array of callbacks used to transform the response, ie. [SUCCESS TRANSFORM, ERROR TRANSFORM] + * @param {Array} options.schema An array of callbacks used to transform the response, + * ie. [SUCCESS SCHEMA, ERROR SCHEMA] + * @param {Array} options.transform An array of callbacks used to transform the response, + * ie. [SUCCESS TRANSFORM, ERROR TRANSFORM] * @returns {Promise<*>} */ const getInstancesInventoryGuests = (id, params = {}, options = {}) => { @@ -1772,8 +1777,10 @@ const getInstancesInventoryGuests = (id, params = {}, options = {}) => { * @param {boolean} options.cache * @param {boolean} options.cancel * @param {string} options.cancelId - * @param {Array} options.schema An array of callbacks used to transform the response, ie. [SUCCESS SCHEMA, ERROR SCHEMA] - * @param {Array} options.transform An array of callbacks used to transform the response, ie. [SUCCESS TRANSFORM, ERROR TRANSFORM] + * @param {Array} options.schema An array of callbacks used to transform the response, + * ie. [SUCCESS SCHEMA, ERROR SCHEMA] + * @param {Array} options.transform An array of callbacks used to transform the response, + * ie. [SUCCESS TRANSFORM, ERROR TRANSFORM] * @returns {Promise<*>} */ const getInstancesInventory = (id, params = {}, options = {}) => { @@ -1891,8 +1898,10 @@ const getInstancesInventory = (id, params = {}, options = {}) => { * @param {boolean} options.cache * @param {boolean} options.cancel * @param {string} options.cancelId - * @param {Array} options.schema An array of callbacks used to transform the response, ie. [SUCCESS SCHEMA, ERROR SCHEMA] - * @param {Array} options.transform An array of callbacks used to transform the response, ie. [SUCCESS TRANSFORM, ERROR TRANSFORM] + * @param {Array} options.schema An array of callbacks used to transform the response, + * ie. [SUCCESS SCHEMA, ERROR SCHEMA] + * @param {Array} options.transform An array of callbacks used to transform the response, + * ie. [SUCCESS TRANSFORM, ERROR TRANSFORM] * @returns {Promise<*>} */ const getSubscriptionsInventory = (id, params = {}, options = {}) => { diff --git a/src/services/rhsm/rhsmTransformers.js b/src/services/rhsm/rhsmTransformers.js index 8c6bbbded..6a09ad898 100644 --- a/src/services/rhsm/rhsmTransformers.js +++ b/src/services/rhsm/rhsmTransformers.js @@ -121,10 +121,10 @@ const rhsmInstancesGuests = (response, { params, _id } = {}) => { /** * Parse RHSM subscriptions response for caching. - * The Subscriptions' response "meta" includes the uom field if it is included within the query parameters. We attempt to - * normalize this for both casing, similar to the Instances meta response, BUT we also add a concatenated string uom for responses - * without the uom query parameter in the form of "Sockets", "Sockets-Cores", or "Cores", dependent on the returned response - * data. + * The Subscriptions' response "meta" includes the uom field if it is included within the query parameters. We + * attempt to normalize this for both casing, similar to the Instances meta response, BUT we also add a + * concatenated string uom for responses without the uom query parameter in the form of "Sockets", "Sockets-Cores", + * or "Cores", dependent on the returned response data. * * @param {object} response * @param {object} config diff --git a/yarn.lock b/yarn.lock index fe1383925..a34e62805 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2769,7 +2769,7 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz#c5a1a4bfe1b57f0c3e61b29883525c6da3e5c091" integrity sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q== -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== @@ -4359,6 +4359,11 @@ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== +"@types/json-schema@^7.0.12": + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== + "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" @@ -4470,6 +4475,11 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== +"@types/semver@^7.5.0": + version "7.5.3" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" + integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== + "@types/serve-index@^1.9.1": version "1.9.1" resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" @@ -4622,6 +4632,14 @@ "@typescript-eslint/types" "5.59.0" "@typescript-eslint/visitor-keys" "5.59.0" +"@typescript-eslint/scope-manager@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz#1cf33b991043886cd67f4f3600b8e122fc14e711" + integrity sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A== + dependencies: + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" + "@typescript-eslint/type-utils@5.59.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.0.tgz#8e8d1420fc2265989fa3a0d897bde37f3851e8c9" @@ -4637,6 +4655,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.0.tgz#3fcdac7dbf923ec5251545acdd9f1d42d7c4fe32" integrity sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA== +"@typescript-eslint/types@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.5.tgz#4571320fb9cf669de9a95d9849f922c3af809790" + integrity sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ== + "@typescript-eslint/typescript-estree@5.59.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz#8869156ee1dcfc5a95be3ed0e2809969ea28e965" @@ -4650,6 +4673,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz#4578de1a26e9f24950f029a4f00d1bfe41f15a39" + integrity sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg== + dependencies: + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/visitor-keys" "6.7.5" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/utils@5.59.0", "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.58.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.0.tgz#063d066b3bc4850c18872649ed0da9ee72d833d5" @@ -4664,6 +4700,19 @@ eslint-scope "^5.1.1" semver "^7.3.7" +"@typescript-eslint/utils@^6.4.0": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.5.tgz#ab847b53d6b65e029314b8247c2336843dba81ab" + integrity sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.7.5" + "@typescript-eslint/types" "6.7.5" + "@typescript-eslint/typescript-estree" "6.7.5" + semver "^7.5.4" + "@typescript-eslint/visitor-keys@5.59.0": version "5.59.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.0.tgz#a59913f2bf0baeb61b5cfcb6135d3926c3854365" @@ -4672,6 +4721,14 @@ "@typescript-eslint/types" "5.59.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@6.7.5": + version "6.7.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz#84c68d6ceb5b12d5246b918b84f2b79affd6c2f1" + integrity sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg== + dependencies: + "@typescript-eslint/types" "6.7.5" + eslint-visitor-keys "^3.4.1" + "@webassemblyjs/ast@1.11.5", "@webassemblyjs/ast@^1.11.5": version "1.11.5" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.5.tgz#6e818036b94548c1fb53b754b5cae3c9b208281c" @@ -7971,6 +8028,13 @@ eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0: dependencies: debug "^3.2.7" +eslint-plugin-comment-length@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-comment-length/-/eslint-plugin-comment-length-1.6.1.tgz#e09224f43aa7fa97c0f2adf666a0b3d79d944097" + integrity sha512-5Tn1ouS2x4N+qR9NZdtwOrZQ12Ic8dK4cGqwFFF3Ng20k41+wFbXSTAYZiwiTs0K15cjmotFJ4r4qAMu/9ziLQ== + dependencies: + "@typescript-eslint/utils" "^6.4.0" + eslint-plugin-es@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" @@ -16201,6 +16265,11 @@ tryer@^1.0.1: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== +ts-api-utils@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" + integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg== + ts-easing@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/ts-easing/-/ts-easing-0.2.0.tgz#c8a8a35025105566588d87dbda05dd7fbfa5a4ec"