@wavemaker/variables 12.0.0-next.142016 → 12.0.0-next.28533
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/npm-shrinkwrap.json +2012 -0
- package/package-lock.json +2012 -0
- {variables → package}/package.json +4 -3
- {variables → package}/scripts/build.js +52 -15
- package/scripts/build.js.map +1 -0
- package/src/manager/action/timer-action.manager.js.map +1 -0
- {variables → package}/src/manager/variable/base-variable.manager.js +2 -2
- package/src/manager/variable/base-variable.manager.js.map +1 -0
- {variables → package}/src/manager/variable/crud-variable.manager.js +16 -16
- package/src/manager/variable/crud-variable.manager.js.map +1 -0
- {variables → package}/src/manager/variable/live-variable.manager.js +50 -50
- package/src/manager/variable/live-variable.manager.js.map +1 -0
- {variables → package}/src/manager/variable/model-variable.manager.js +12 -12
- package/src/manager/variable/model-variable.manager.js.map +1 -0
- {variables → package}/src/manager/variable/service-variable.manager.js +42 -41
- package/src/manager/variable/service-variable.manager.js.map +1 -0
- package/src/model/action/timer-action.js.map +1 -0
- {variables → package}/src/model/base-action.d.ts +1 -1
- {variables → package}/src/model/base-action.js +3 -3
- package/src/model/base-action.js.map +1 -0
- {variables → package}/src/model/base-variable.d.ts +1 -1
- {variables → package}/src/model/base-variable.js +16 -16
- package/src/model/base-variable.js.map +1 -0
- {variables → package}/src/model/variable/crud-variable.js +2 -2
- package/src/model/variable/crud-variable.js.map +1 -0
- {variables → package}/src/model/variable/live-variable.js +7 -7
- package/src/model/variable/live-variable.js.map +1 -0
- package/src/model/variable/model-variable.js.map +1 -0
- {variables → package}/src/model/variable/service-variable.js +2 -2
- package/src/model/variable/service-variable.js.map +1 -0
- package/src/types/event-notifier.js.map +1 -0
- {variables → package}/src/util/dataset-util.js +16 -16
- package/src/util/dataset-util.js.map +1 -0
- {variables → package}/src/util/file-upload.util.js +12 -12
- package/src/util/file-upload.util.js.map +1 -0
- package/src/util/inflight-queue.js.map +1 -0
- package/src/util/notify-promise.js.map +1 -0
- {variables → package}/src/util/utils.js +19 -19
- package/src/util/utils.js.map +1 -0
- {variables → package}/src/util/variable/live-variable.http.utils.js +6 -6
- package/src/util/variable/live-variable.http.utils.js.map +1 -0
- {variables → package}/src/util/variable/live-variable.utils.js +84 -84
- package/src/util/variable/live-variable.utils.js.map +1 -0
- {variables → package}/src/util/variable/pagination.utils.d.ts +10 -1
- {variables → package}/src/util/variable/pagination.utils.js +113 -58
- package/src/util/variable/pagination.utils.js.map +1 -0
- {variables → package}/src/util/variable/service-variable.utils.js +33 -28
- package/src/util/variable/service-variable.utils.js.map +1 -0
- {variables → package}/src/util/variable/variables.utils.js +49 -49
- package/src/util/variable/variables.utils.js.map +1 -0
- package/webpack.config.d.ts +21 -0
- variables/scripts/build.js.map +0 -1
- variables/scripts/update-version.d.ts +0 -1
- variables/scripts/update-version.js +0 -27
- variables/scripts/update-version.js.map +0 -1
- variables/src/manager/action/timer-action.manager.js.map +0 -1
- variables/src/manager/variable/base-variable.manager.js.map +0 -1
- variables/src/manager/variable/crud-variable.manager.js.map +0 -1
- variables/src/manager/variable/live-variable.manager.js.map +0 -1
- variables/src/manager/variable/model-variable.manager.js.map +0 -1
- variables/src/manager/variable/service-variable.manager.js.map +0 -1
- variables/src/model/action/timer-action.js.map +0 -1
- variables/src/model/base-action.js.map +0 -1
- variables/src/model/base-variable.js.map +0 -1
- variables/src/model/variable/crud-variable.js.map +0 -1
- variables/src/model/variable/live-variable.js.map +0 -1
- variables/src/model/variable/model-variable.js.map +0 -1
- variables/src/model/variable/service-variable.js.map +0 -1
- variables/src/types/event-notifier.js.map +0 -1
- variables/src/util/dataset-util.js.map +0 -1
- variables/src/util/file-upload.util.js.map +0 -1
- variables/src/util/inflight-queue.js.map +0 -1
- variables/src/util/notify-promise.js.map +0 -1
- variables/src/util/utils.js.map +0 -1
- variables/src/util/variable/live-variable.http.utils.js.map +0 -1
- variables/src/util/variable/live-variable.utils.js.map +0 -1
- variables/src/util/variable/pagination.utils.js.map +0 -1
- variables/src/util/variable/service-variable.utils.js.map +0 -1
- variables/src/util/variable/variables.utils.js.map +0 -1
- variables/webpack.config.d.ts +0 -21
- {variables → package}/index.d.ts +0 -0
- {variables → package}/index.js +0 -0
- {variables → package}/index.js.map +0 -0
- {variables → package}/scripts/build.d.ts +0 -0
- {variables → package}/src/advanced-options.d.ts +0 -0
- {variables → package}/src/advanced-options.js +0 -0
- {variables → package}/src/advanced-options.js.map +0 -0
- {variables → package}/src/constants/variables.constants.d.ts +0 -0
- {variables → package}/src/constants/variables.constants.js +0 -0
- {variables → package}/src/constants/variables.constants.js.map +0 -0
- {variables → package}/src/factory/variable-manager.factory.d.ts +0 -0
- {variables → package}/src/factory/variable-manager.factory.js +0 -0
- {variables → package}/src/factory/variable-manager.factory.js.map +0 -0
- {variables → package}/src/manager/action/timer-action.manager.d.ts +0 -0
- {variables → package}/src/manager/action/timer-action.manager.js +0 -0
- {variables → package}/src/manager/variable/base-variable.manager.d.ts +0 -0
- {variables → package}/src/manager/variable/crud-variable.manager.d.ts +0 -0
- {variables → package}/src/manager/variable/live-variable.manager.d.ts +0 -0
- {variables → package}/src/manager/variable/model-variable.manager.d.ts +0 -0
- {variables → package}/src/manager/variable/service-variable.manager.d.ts +0 -0
- {variables → package}/src/model/action/timer-action.d.ts +0 -0
- {variables → package}/src/model/action/timer-action.js +0 -0
- {variables → package}/src/model/crud-create.d.ts +0 -0
- {variables → package}/src/model/crud-create.js +0 -0
- {variables → package}/src/model/crud-create.js.map +0 -0
- {variables → package}/src/model/crud-delete.d.ts +0 -0
- {variables → package}/src/model/crud-delete.js +0 -0
- {variables → package}/src/model/crud-delete.js.map +0 -0
- {variables → package}/src/model/crud-list.d.ts +0 -0
- {variables → package}/src/model/crud-list.js +0 -0
- {variables → package}/src/model/crud-list.js.map +0 -0
- {variables → package}/src/model/crud-update.d.ts +0 -0
- {variables → package}/src/model/crud-update.js +0 -0
- {variables → package}/src/model/crud-update.js.map +0 -0
- {variables → package}/src/model/variable/api-aware-variable.d.ts +0 -0
- {variables → package}/src/model/variable/api-aware-variable.js +0 -0
- {variables → package}/src/model/variable/api-aware-variable.js.map +0 -0
- {variables → package}/src/model/variable/crud-variable.d.ts +0 -0
- {variables → package}/src/model/variable/live-variable.d.ts +0 -0
- {variables → package}/src/model/variable/model-variable.d.ts +0 -0
- {variables → package}/src/model/variable/model-variable.js +0 -0
- {variables → package}/src/model/variable/service-variable.d.ts +0 -0
- {variables → package}/src/types/date-formatter.d.ts +0 -0
- {variables → package}/src/types/date-formatter.js +0 -0
- {variables → package}/src/types/date-formatter.js.map +0 -0
- {variables → package}/src/types/event-notifier.d.ts +0 -0
- {variables → package}/src/types/event-notifier.js +0 -0
- {variables → package}/src/types/http-client.service.d.ts +0 -0
- {variables → package}/src/types/http-client.service.js +0 -0
- {variables → package}/src/types/http-client.service.js.map +0 -0
- {variables → package}/src/types/types.d.ts +0 -0
- {variables → package}/src/types/types.js +0 -0
- {variables → package}/src/types/types.js.map +0 -0
- {variables → package}/src/util/dataset-util.d.ts +0 -0
- {variables → package}/src/util/file-upload.util.d.ts +0 -0
- {variables → package}/src/util/inflight-queue.d.ts +0 -0
- {variables → package}/src/util/inflight-queue.js +0 -0
- {variables → package}/src/util/notify-promise.d.ts +0 -0
- {variables → package}/src/util/notify-promise.js +0 -0
- {variables → package}/src/util/oAuth.utils.d.ts +0 -0
- {variables → package}/src/util/oAuth.utils.js +0 -0
- {variables → package}/src/util/oAuth.utils.js.map +0 -0
- {variables → package}/src/util/utils.d.ts +0 -0
- {variables → package}/src/util/variable/live-variable.http.utils.d.ts +0 -0
- {variables → package}/src/util/variable/live-variable.utils.d.ts +0 -0
- {variables → package}/src/util/variable/service-variable.utils.d.ts +0 -0
- {variables → package}/src/util/variable/variables.utils.d.ts +0 -0
- {variables → package}/webpack.config.js +0 -0
- {variables → package}/webpack.config.js.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-variable.utils.js","sourceRoot":"./","sources":["src/util/variable/live-variable.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { hasCordova, getClonedObject, isDateTimeType, isDefined, replace, triggerFn, isNumberType } from \"../../util/utils\";\nimport { $rootScope, DB_CONSTANTS, SWAGGER_CONSTANTS } from '../../constants/variables.constants';\nimport { getEvaluatedOrderBy, formatDate } from './variables.utils';\n\n// @ts-ignore\nimport moment from 'moment';\nimport {forEach, find, get, includes, map, filter, trim ,isEmpty, endsWith, join, toLower, isObject, isArray, toUpper, reduce, isString, each, isNil, remove, isNull, some ,indexOf, clone, replace as _replace, isNaN as _isNaN} from 'lodash-es';\n\nexport class LiveVariableUtils {\n\n static isCompositeKey(primaryKey) {\n return !primaryKey || (primaryKey && (!primaryKey.length || primaryKey.length > 1));\n }\n\n static isNoPrimaryKey(primaryKey) {\n return (!primaryKey || (primaryKey && !primaryKey.length));\n }\n\n // Generate the URL based on the primary keys and their values\n static getCompositeIDURL(primaryKeysData) {\n let compositeId = '';\n // Loop over the 'compositeKeysData' and construct the 'compositeId'.\n forEach(primaryKeysData, (paramValue, paramName) => {\n compositeId += paramName + '=' + encodeURIComponent(paramValue) + '&';\n });\n compositeId = compositeId.slice(0, -1);\n return compositeId;\n }\n\n\n // Check if table has blob column\n static hasBlob(variable) {\n return find(get(variable, ['propertiesMap', 'columns']), {'type': 'blob'});\n }\n\n static getPrimaryKey(variable) {\n if (!variable.propertiesMap) {\n return [];\n }\n\n if (variable.propertiesMap.primaryFields) {\n return variable.propertiesMap.primaryFields;\n }\n /*Old projects do not have primary fields. Get primary key from the columns*/\n const primaryKey = [];\n /*Loop through the propertiesMap and get the primary key column.*/\n forEach(variable.propertiesMap.columns, (index, column) => {\n if (column.isPrimaryKey) {\n if (column.isRelated && (!includes(column.relatedFieldName, primaryKey))) {\n primaryKey.push(column.relatedFieldName);\n } else if (!includes(column.fieldName, primaryKey)) {\n primaryKey.push(column.fieldName);\n }\n }\n });\n return primaryKey;\n }\n\n // Construct the URL for blob columns and set it in the data, so that widgets can use this\n static processBlobColumns(responseData, variable) {\n if (!responseData) {\n return;\n }\n const blobCols = map(filter(variable.propertiesMap.columns, {'type': 'blob'}), 'fieldName'),\n deployedUrl = trim($rootScope.project.deployedUrl);\n let href = '',\n primaryKeys;\n\n if (isEmpty(blobCols)) {\n return;\n }\n\n if (hasCordova()) {\n href += endsWith(deployedUrl, '/') ? deployedUrl : deployedUrl + '/';\n }\n href += ((variable._prefabName !== '' && variable._prefabName !== undefined) ? 'prefabs/' + variable._prefabName : 'services') + '/' + variable.liveSource + '/' + variable.type + '/';\n primaryKeys = variable.propertiesMap.primaryFields || variable.propertiesMap.primaryKeys;\n forEach(responseData, data => {\n if (data) {\n forEach(blobCols, col => {\n const compositeKeysData = {};\n if (data[col] === null || !isEmpty(trim(data[col]))) {\n return;\n }\n if (LiveVariableUtils.isCompositeKey(primaryKeys)) {\n primaryKeys.forEach(key => {\n compositeKeysData[key] = data[key];\n });\n data[col] = href + 'composite-id/content/' + col + '?' + LiveVariableUtils.getCompositeIDURL(compositeKeysData);\n } else {\n data[col] = href + data[join(primaryKeys)] + '/content/' + col;\n }\n });\n }\n });\n }\n\n static getHibernateOrSqlType(variable, fieldName, type, entityName?: string) {\n const columns = variable.propertiesMap.columns;\n let column,\n relatedCols,\n relatedCol,\n columnParts;\n if (includes(fieldName, '.')) {\n columnParts = fieldName.split('.');\n if (columnParts.length > 2) {\n return undefined;\n }\n column = find(columns, col => {\n return col.fieldName === columnParts[0];\n });\n relatedCols = column && column.columns;\n relatedCol = find(relatedCols, col => {\n return col.fieldName === columnParts[1];\n });\n return relatedCol && relatedCol[type];\n }\n column = find(columns, col => {\n return col.fieldName === fieldName || col.relatedColumnName === fieldName;\n });\n if (!column && entityName) {\n const entity = find(columns, col => col.relatedEntityName === entityName);\n column = find(entity.columns, col => {\n return col.fieldName === fieldName || col.relatedColumnName === fieldName;\n });\n }\n return column && column[type];\n }\n\n /*Function to get the sqlType of the specified field.*/\n static getSqlType(variable, fieldName, entityName?: string) {\n return LiveVariableUtils.getHibernateOrSqlType(variable, fieldName, 'type', entityName);\n }\n\n /*Function to check if the specified field has a one-to-many relation or not.*/\n static isRelatedFieldMany(variable, fieldName) {\n const columns = variable.propertiesMap.columns,\n columnsCount = columns.length;\n let index,\n column;\n /*Loop through the columns of the liveVariable*/\n for (index = 0; index < columnsCount; index += 1) {\n column = columns[index];\n /*If the specified field is found in the columns of the variable,\n * then it has a many-to-one relation.*/\n if (column.fieldName === fieldName) {\n return false;\n }\n }\n return true;\n }\n\n static isStringType(type) {\n return includes(['text', 'string'], toLower(type));\n }\n\n static getSQLFieldType(variable, options) {\n if (includes(['timestamp', 'datetime', 'date'], options.type)) {\n return options.type;\n }\n return LiveVariableUtils.getSqlType(variable, options.fieldName) || options.type;\n }\n\n static getAttributeName(variable, fieldName) {\n let attrName = fieldName;\n variable.propertiesMap.columns.forEach(column => {\n if (column.fieldName === fieldName && column.isRelated) {\n attrName = column.relatedFieldName;\n }\n });\n return attrName;\n }\n\n static getFilterCondition(filterCondition) {\n if (includes(DB_CONSTANTS.DATABASE_RANGE_MATCH_MODES, filterCondition)) {\n return filterCondition;\n }\n return DB_CONSTANTS.DATABASE_MATCH_MODES['exact'];\n }\n\n static getFilterOption(variable, fieldOptions, options) {\n let attributeName,\n fieldValue = fieldOptions.value,\n filterOption,\n filterCondition;\n\n const matchModes = DB_CONSTANTS.DATABASE_MATCH_MODES,\n fieldName = fieldOptions.fieldName,\n fieldRequired = fieldOptions.required || false,\n fieldType = LiveVariableUtils.getSQLFieldType(variable, fieldOptions);\n\n filterCondition = matchModes[fieldOptions.matchMode] || matchModes[fieldOptions.filterCondition] || fieldOptions.filterCondition;\n\n fieldOptions.type = fieldType;\n /* if the field value is an object(complex type), loop over each field inside and push only first level fields */\n if (isObject(fieldValue) && !isArray(fieldValue)) {\n const firstLevelValues = [];\n forEach(fieldValue, (subFieldValue, subFieldName) => {\n if (subFieldValue && !isObject(subFieldValue)) {\n firstLevelValues.push(fieldName + '.' + subFieldName + '=' + subFieldValue);\n }\n });\n return firstLevelValues;\n }\n\n if (includes(DB_CONSTANTS.DATABASE_EMPTY_MATCH_MODES, filterCondition)) {\n attributeName = LiveVariableUtils.getAttributeName(variable, fieldName);\n // For non string types empty match modes are not supported, so convert them to null match modes.\n if (fieldType && !LiveVariableUtils.isStringType(fieldType)) {\n filterCondition = DB_CONSTANTS.DATABASE_NULL_EMPTY_MATCH[filterCondition];\n }\n filterOption = {\n 'attributeName': attributeName,\n 'attributeValue': '',\n 'attributeType': toUpper(fieldType),\n 'filterCondition': filterCondition,\n 'required': fieldRequired\n };\n if (options.searchWithQuery) {\n filterOption.isVariableFilter = fieldOptions.isVariableFilter;\n }\n return filterOption;\n }\n\n if (isDefined(fieldValue) && fieldValue !== null && fieldValue !== '') {\n /*Based on the sqlType of the field, format the value & set the filter condition.*/\n if (fieldType) {\n switch (fieldType) {\n case 'integer':\n fieldValue = isArray(fieldValue) ? reduce(fieldValue, (result, value) => {\n value = parseInt(value, 10);\n if (!_isNaN(value)) {\n result.push(value);\n }\n return result;\n }, []) : parseInt(fieldValue, 10);\n filterCondition = filterCondition ? LiveVariableUtils.getFilterCondition(filterCondition) : matchModes['exact'];\n break;\n case 'date':\n case 'datetime':\n case 'timestamp':\n fieldValue = formatDate(fieldValue, fieldType, variable.dateFormatter);\n filterCondition = filterCondition ? LiveVariableUtils.getFilterCondition(filterCondition) : matchModes['exact'];\n break;\n case 'text':\n case 'string':\n if (isArray(fieldValue)) {\n filterCondition = includes([matchModes['in'], matchModes['notin']], filterCondition) ? filterCondition : matchModes['exact'];\n } else {\n filterCondition = filterCondition || matchModes['anywhereignorecase'];\n }\n break;\n default:\n filterCondition = filterCondition ? LiveVariableUtils.getFilterCondition(filterCondition) : matchModes['exact'];\n break;\n }\n } else {\n filterCondition = isString(fieldValue) ? matchModes['anywhereignorecase'] : matchModes['exact'];\n }\n attributeName = LiveVariableUtils.getAttributeName(variable, fieldName);\n filterOption = {\n 'attributeName': attributeName,\n 'attributeValue': fieldValue,\n 'attributeType': toUpper(fieldType),\n 'filterCondition': filterCondition,\n 'required': fieldRequired\n };\n if (options.searchWithQuery) {\n filterOption.isVariableFilter = fieldOptions.isVariableFilter;\n }\n return filterOption;\n }\n }\n\n static getFilterOptions(variable, filterFields, options) {\n let filterOptions = [];\n each(filterFields, (fieldOptions) => {\n const filterOption = LiveVariableUtils.getFilterOption(variable, fieldOptions, options);\n if (!isNil(filterOption)) {\n if (isArray(filterOption)) {\n filterOptions = filterOptions.concat(filterOption);\n } else {\n filterOptions.push(filterOption);\n }\n }\n });\n return filterOptions;\n }\n\n // Wrap the field name and value in lower() in ignore case scenario\n // TODO: Change the function name to represent the added functionality of identifiers for datetime, timestamp and float types. Previously only lower was warapped.\n static wrapInLowerCase(value, options, ignoreCase, isField?) {\n const type = toLower(options.attributeType);\n // If ignore case is true and type is string/ text and match mode is string type, wrap in lower()\n if (ignoreCase && (!type || LiveVariableUtils.isStringType(type)) && includes(DB_CONSTANTS.DATABASE_STRING_MODES, options.filterCondition)) {\n return 'lower(' + value + ')';\n }\n return value;\n }\n\n static encodeAndAddQuotes(value, type, skipEncode) {\n let encodedValue = skipEncode ? value : encodeURIComponent(value);\n type = toLower(type);\n encodedValue = _replace(encodedValue, /'/g, '\\'\\'');\n // For number types, don't wrap the value in quotes\n if ((isNumberType(type) && type !== 'float')) {\n return encodedValue;\n }\n return '\\'' + encodedValue + '\\'';\n }\n\n static getParamValue(value, options, ignoreCase, skipEncode) {\n let param;\n const filterCondition = options.filterCondition,\n dbModes = DB_CONSTANTS.DATABASE_MATCH_MODES,\n type = options.attributeType;\n if (includes(DB_CONSTANTS.DATABASE_EMPTY_MATCH_MODES, filterCondition)) {\n // For empty matchmodes, no value is required\n return '';\n }\n switch (filterCondition) {\n case dbModes.startignorecase:\n case dbModes.start:\n param = LiveVariableUtils.encodeAndAddQuotes(value + '%', type, skipEncode);\n param = LiveVariableUtils.wrapInLowerCase(param, options, ignoreCase);\n break;\n case dbModes.endignorecase:\n case dbModes.end:\n param = LiveVariableUtils.encodeAndAddQuotes('%' + value, type, skipEncode);\n param = LiveVariableUtils.wrapInLowerCase(param, options, ignoreCase);\n break;\n case dbModes.nowhereignorecase:\n case dbModes.nowhere:\n case dbModes.anywhereignorecase:\n case dbModes.anywhere:\n param = LiveVariableUtils.encodeAndAddQuotes('%' + value + '%', type, skipEncode);\n param = LiveVariableUtils.wrapInLowerCase(param, options, ignoreCase);\n break;\n case dbModes.between:\n param = join(map(value, val => {\n return LiveVariableUtils.wrapInLowerCase(LiveVariableUtils.encodeAndAddQuotes(val, type, skipEncode), options, ignoreCase);\n }), ' and ');\n break;\n case dbModes.in:\n case dbModes.notin:\n param = join(map(value, val => {\n return LiveVariableUtils.wrapInLowerCase(LiveVariableUtils.encodeAndAddQuotes(val, type, skipEncode), options, ignoreCase);\n }), ', ');\n param = '(' + param + ')';\n break;\n /*case dbModes.exactignorecase:\n case dbModes.exact:\n case dbModes.notequals:\n The above three cases will be handled by default*/\n default:\n param = LiveVariableUtils.encodeAndAddQuotes(value, type, skipEncode);\n param = LiveVariableUtils.wrapInLowerCase(param, options, ignoreCase);\n break;\n }\n return isDefined(param) ? param : '';\n }\n\n static getSearchQuery(filterOptions, operator, ignoreCase, skipEncode?) {\n let query;\n const params = [];\n forEach(filterOptions, fieldValue => {\n const value = fieldValue.attributeValue,\n dbModes = DB_CONSTANTS.DATABASE_MATCH_MODES,\n isValArray = isArray(value);\n let fieldName = fieldValue.attributeName,\n filterCondition = fieldValue.filterCondition,\n matchModeExpr,\n paramValue;\n // If value is an empty array, do not generate the query\n // If values is NaN and number type, do not generate query for this field\n if ((isValArray && isEmpty(value)) || (!isValArray && _isNaN(value) && (isNumberType(fieldValue.attributeType))) || (!isValArray && (_isNaN(value) && !moment(value).isValid() && isDateTimeType(toLower(fieldValue.attributeType))))) {\n return;\n }\n if (isValArray) {\n // If array is value and mode is between, pass between. Else pass as in query\n filterCondition = filterCondition === dbModes.between || filterCondition === dbModes.notin ? filterCondition : dbModes.in;\n fieldValue.filterCondition = filterCondition;\n }\n matchModeExpr = DB_CONSTANTS.DATABASE_MATCH_MODES_WITH_QUERY[filterCondition];\n paramValue = LiveVariableUtils.getParamValue(value, fieldValue, ignoreCase, skipEncode);\n fieldName = LiveVariableUtils.wrapInLowerCase(fieldName, fieldValue, ignoreCase);\n params.push(replace(matchModeExpr, [fieldName, paramValue]));\n });\n query = join(params, operator); // empty space added intentionally around OR\n return query;\n }\n\n /**\n * creating the proper values from the actual object like for between,in matchModes value has to be an array like [1,2]\n * @param rules recursive filterexpressions object\n * @param variable variable object\n * @param options options\n */\n static processFilterFields(rules, variable, options) {\n remove(rules, rule => {\n return rule && (isString(rule.value) && rule.value.indexOf('bind:') === 0 || (rule.matchMode === 'between' ? (isString(rule.secondvalue) && rule.secondvalue.indexOf('bind:') === 0) : false));\n });\n\n forEach(rules, (rule, index) => {\n if (rule) {\n if (rule.rules) {\n LiveVariableUtils.processFilterFields(rule.rules, variable, options);\n } else {\n if (!isNull(rule.target)) {\n const value = rule.matchMode.toLowerCase() === DB_CONSTANTS.DATABASE_MATCH_MODES.between.toLowerCase()\n ? (isArray(rule.value) ? rule.value : [rule.value, rule.secondvalue])\n : (rule.matchMode.toLowerCase() === DB_CONSTANTS.DATABASE_MATCH_MODES.in.toLowerCase() || rule.matchMode.toLowerCase() === DB_CONSTANTS.DATABASE_MATCH_MODES.notin.toLowerCase()\n ? (isArray(rule.value) ? rule.value : (rule.value ? rule.value.split(',').map(val => val.trim()) : ''))\n : rule.value);\n rules[index] = LiveVariableUtils.getFilterOption(variable, {\n 'fieldName': rule.target,\n 'type': rule.type,\n 'value': value,\n 'required': rule.required,\n 'filterCondition': rule.matchMode || options.matchMode || variable.matchMode\n }, options);\n }\n }\n }\n });\n }\n\n static getSearchField(fieldValue, ignoreCase, skipEncode) {\n let fieldName = fieldValue.attributeName;\n let matchModeExpr;\n let paramValue;\n let filterCondition = fieldValue.filterCondition;\n\n const value = fieldValue.attributeValue;\n const isValArray = isArray(value);\n const dbModes = DB_CONSTANTS.DATABASE_MATCH_MODES;\n\n // If value is an empty array, do not generate the query\n // If values is NaN and number type, do not generate query for this field\n if ((isValArray && isEmpty(value)) ||\n (isValArray && some(value, val => (isNull(val) || _isNaN(val) || val === ''))) ||\n (!isValArray && (_isNaN(value) && (isNumberType(fieldValue.attributeType)))) ||\n (!isValArray && (_isNaN(value) && !moment(value).isValid() && isDateTimeType(toLower(fieldValue.attributeType))))) {\n return;\n }\n if (isValArray) {\n // If array is value and mode is between, pass between. Else pass as in query\n filterCondition = filterCondition === dbModes.between || filterCondition === dbModes.notin ? filterCondition : dbModes.in;\n fieldValue.filterCondition = filterCondition;\n }\n matchModeExpr = DB_CONSTANTS.DATABASE_MATCH_MODES_WITH_QUERY[filterCondition];\n paramValue = LiveVariableUtils.getParamValue(value, fieldValue, ignoreCase, skipEncode);\n fieldName = LiveVariableUtils.wrapInLowerCase(fieldName, fieldValue, ignoreCase);\n return replace(matchModeExpr, [fieldName, paramValue]);\n }\n\n /**\n * this is used to identify whether to use ignorecase at each criteria level and not use the variable\n * level isIgnoreCase flag and apply it to all the rules.\n * Instead of adding an extra param to the criteria object, we have added few other matchmodes for string types like\n * anywhere with anywhereignorecase, start with startignorecase, end with endignorecase, exact with exactignorecase,\n * So while creating the criteria itseld user can choose whether to use ignore case or not for a particular column while querying\n * @param matchMode\n * @param ignoreCase\n * @returns {*} boolean\n */\n static getIgnoreCase(matchMode, ignoreCase) {\n const matchModes = DB_CONSTANTS.DATABASE_MATCH_MODES;\n if (indexOf([matchModes['anywhere'], matchModes['nowhere'], matchModes['start'], matchModes['end'], matchModes['exact']], matchMode) !== -1) {\n return false;\n }\n if (indexOf([matchModes['anywhereignorecase'], matchModes['nowhereignorecase'], matchModes['startignorecase'], matchModes['endignorecase'], matchModes['exactignorecase']], matchMode) !== -1) {\n return true;\n }\n return ignoreCase;\n }\n\n static generateSearchQuery(rules, condition, ignoreCase, skipEncode) {\n const params = [];\n forEach(rules, rule => {\n if (rule) {\n if (rule.rules) {\n const query = LiveVariableUtils.generateSearchQuery(rule.rules, rule.condition, ignoreCase, skipEncode);\n if (query !== '') {\n params.push('(' + query + ')');\n }\n } else {\n const searchField = LiveVariableUtils.getSearchField(rule, LiveVariableUtils.getIgnoreCase(rule.filterCondition, ignoreCase), skipEncode);\n if (!isNil(searchField)) {\n params.push(searchField);\n }\n }\n }\n });\n return join(params, ' ' + condition + ' ');\n }\n\n static prepareTableOptionsForFilterExps(variable, options, clonedFields) {\n if (!isDefined(options.searchWithQuery)) {\n options.searchWithQuery = true; // Using query api instead of search api\n }\n\n const filterOptions = [];\n const matchModes = DB_CONSTANTS.DATABASE_MATCH_MODES;\n let orderByFields,\n orderByOptions,\n query;\n let clonedObj = clonedFields || getClonedObject(variable.filterExpressions);\n\n // if filterexpression from live filter is present use it to query\n if (options.filterExpr && !isEmpty(options.filterExpr)) {\n clonedObj = options.filterExpr;\n }\n // merge live filter runtime values\n let filterRules: any = {};\n if (!isEmpty(options.filterFields)) {\n let operator = '';\n for (const field in options.filterFields) {\n operator = options.filterFields[field] && options.filterFields[field]['logicalOp'] || '';\n break;\n }\n filterRules = {'condition': options.logicalOp || operator || 'AND', 'rules': []};\n forEach(options.filterFields, (filterObj, filterName) => {\n if (!filterObj) {\n return\n }\n const filterCondition = matchModes[filterObj.matchMode] || matchModes[filterObj.filterCondition] || filterObj.filterCondition;\n if (includes(DB_CONSTANTS.DATABASE_EMPTY_MATCH_MODES, filterCondition) ||\n (!isNil(filterObj.value) && filterObj.value !== '')) {\n const type = filterObj.type || LiveVariableUtils.getSqlType(variable, filterName, options.entityName);\n const ruleObj = {\n 'target': filterName,\n 'type': type,\n 'matchMode': filterObj.matchMode || (LiveVariableUtils.isStringType(type) ? 'startignorecase' : 'exact'),\n 'value': filterObj.value,\n 'required': filterObj.required || false\n };\n filterRules.rules.push(ruleObj);\n }\n });\n }\n if (!isEmpty(clonedObj)) {\n if (!isNil(filterRules.rules) && filterRules.rules.length) {\n // combine both the rules using 'AND'\n const tempRules = {'condition': 'AND', 'rules': []};\n tempRules.rules.push(getClonedObject(clonedObj));\n tempRules.rules.push(filterRules);\n clonedObj = tempRules;\n }\n } else {\n clonedObj = filterRules;\n }\n\n LiveVariableUtils.processFilterFields(clonedObj.rules, variable, options);\n query = LiveVariableUtils.generateSearchQuery(clonedObj.rules, clonedObj.condition, variable.ignoreCase, options.skipEncode);\n\n orderByFields = getEvaluatedOrderBy(variable.orderBy, options.orderBy);\n orderByOptions = orderByFields ? 'sort=' + orderByFields : '';\n\n return {\n 'filter' : filterOptions,\n 'sort' : orderByOptions,\n 'query' : query\n };\n }\n\n static prepareTableOptions(variable, options, clonedFields?) {\n if (variable.operation === 'read') {\n return LiveVariableUtils.prepareTableOptionsForFilterExps(variable, options, clonedFields);\n }\n if (!isDefined(options.searchWithQuery)) {\n options.searchWithQuery = true; // Using query api instead of search api\n }\n const filterFields = [];\n let filterOptions = [],\n orderByFields,\n orderByOptions,\n query,\n optionsQuery;\n clonedFields = clonedFields || variable.filterFields;\n // get the filter fields from the variable\n forEach(clonedFields, (value, key) => {\n if (isObject(value) && (!options.filterFields || !options.filterFields[key] || options.filterFields[key].logicalOp === 'AND')) {\n value.fieldName = key;\n if (LiveVariableUtils.isStringType(LiveVariableUtils.getSQLFieldType(variable, value))) {\n value.filterCondition = DB_CONSTANTS.DATABASE_MATCH_MODES[value.matchMode || variable.matchMode];\n }\n value.isVariableFilter = true;\n filterFields.push(value);\n }\n });\n // get the filter fields from the options\n forEach(options.filterFields, (value, key) => {\n value.fieldName = key;\n value.filterCondition = DB_CONSTANTS.DATABASE_MATCH_MODES[value.matchMode || options.matchMode || variable.matchMode];\n filterFields.push(value);\n });\n if (variable.operation === 'read' || options.operation === 'read') {\n filterOptions = LiveVariableUtils.getFilterOptions(variable, filterFields, options);\n }\n /*if searchWithQuery is true, then convert the input params into query string. For example if firstName and lastName\n should be sent as params then query string will be q='firstName containing 'someValue' OR lastName containing 'someValue''\n */\n if (options.searchWithQuery && filterOptions.length) {\n // Generate query for variable filter fields. This has AND logical operator\n query = LiveVariableUtils.getSearchQuery(filter(filterOptions, {'isVariableFilter': true}), ' AND ', variable.ignoreCase, options.skipEncode);\n // Generate query for option filter fields. This has default logical operator as OR\n optionsQuery = LiveVariableUtils.getSearchQuery(filter(filterOptions, {'isVariableFilter': undefined}), ' ' + (options.logicalOp || 'AND') + ' ', variable.ignoreCase, options.skipEncode);\n if (optionsQuery) {\n // If both variable and option query are present, merge them with AND\n query = query ? (query + ' AND ( ' + optionsQuery + ' )') : optionsQuery;\n }\n }\n orderByFields = getEvaluatedOrderBy(variable.orderBy, options.orderBy);\n orderByOptions = orderByFields ? 'sort=' + orderByFields : '';\n\n return {\n 'filter': filterOptions,\n 'sort': orderByOptions,\n 'query': query\n };\n }\n\n /* Function to check if specified field is of type date*/\n static getFieldType(fieldName, variable, relatedField?) {\n let fieldType,\n columns,\n result;\n if (variable.propertiesMap) {\n columns = variable.propertiesMap.columns || [];\n result = find(columns, obj => {\n return obj.fieldName === fieldName;\n });\n // if related field name passed, get its type from columns inside the current field\n if (relatedField && result) {\n result = find(result.columns, obj => {\n return obj.fieldName === relatedField;\n });\n }\n fieldType = result && result.type;\n }\n return fieldType;\n }\n\n // Prepare formData for blob columns\n static prepareFormData(variableDetails, rowObject) {\n const formData: any = new FormData();\n formData.rowData = clone(rowObject);\n forEach(rowObject, (colValue, colName) => {\n if (LiveVariableUtils.getFieldType(colName, variableDetails) === 'blob') {\n if (isObject(colValue)) {\n if (isArray(colValue)) {\n forEach(colValue, fileObject => {\n formData.append(colName, fileObject, fileObject.name);\n });\n } else {\n formData.append(colName, colValue, colValue.name);\n }\n }\n rowObject[colName] = colValue !== null ? '' : null;\n }\n });\n formData.append(SWAGGER_CONSTANTS.WM_DATA_JSON, new Blob([JSON.stringify(rowObject)], {\n type: 'application/json'\n }));\n return formData;\n }\n\n static traverseFilterExpressions(filterExpressions, traverseCallbackFn) {\n if (filterExpressions && filterExpressions.rules) {\n forEach(filterExpressions.rules, (filExpObj, i) => {\n if (filExpObj.rules) {\n LiveVariableUtils.traverseFilterExpressions(filExpObj, traverseCallbackFn);\n } else {\n return triggerFn(traverseCallbackFn, filterExpressions, filExpObj);\n }\n });\n }\n }\n\n /**\n * Traverses recursively the filterExpressions object and if there is any required field present with no value,\n * then we will return without proceeding further. Its upto the developer to provide the mandatory value,\n * if he wants to assign it in teh onbefore<delete/insert/update>function then make that field in\n * the filter query section as optional\n * @param filterExpressions - recursive rule Object\n * @returns {Object} object or boolean. Object if everything gets validated or else just boolean indicating failure in the validations\n */\n static getFilterExprFields(filterExpressions) {\n let isRequiredFieldAbsent = false;\n const traverseCallbackFn = (parentFilExpObj, filExpObj) => {\n if (filExpObj\n && filExpObj.required\n && ((indexOf(['null', 'isnotnull', 'empty', 'isnotempty', 'nullorempty'], filExpObj.matchMode) === -1) && filExpObj.value === '')) {\n isRequiredFieldAbsent = true;\n return false;\n }\n };\n LiveVariableUtils.traverseFilterExpressions(filterExpressions, traverseCallbackFn);\n return isRequiredFieldAbsent ? !isRequiredFieldAbsent : filterExpressions;\n }\n\n /**\n *\n * @param variable\n * @param options\n * @returns {function(*=): *} returns a function which should be called for the where clause.\n * This return function can take a function as argument. This argument function can modify the filter fields\n * before generating where clause.\n */\n static getWhereClauseGenerator(variable, options, updatedFilterFields?: any) {\n return (modifier, skipEncode?: boolean) => {\n const clonedFields = LiveVariableUtils.getFilterExprFields(getClonedObject(updatedFilterFields || variable.filterExpressions));\n // this flag skips the encoding of the query\n if (isDefined(skipEncode)) {\n options.skipEncode = skipEncode;\n }\n if (modifier) {\n // handling the scenario where variable can also have filterFields\n if (options.filterFields) {\n modifier(clonedFields, options);\n } else {\n modifier(clonedFields);\n }\n }\n return LiveVariableUtils.prepareTableOptions(variable, options, clonedFields).query;\n };\n }\n}\n\n"]}
|
|
@@ -67,7 +67,7 @@ export declare class PaginationUtils {
|
|
|
67
67
|
* @param variable withholds variable information
|
|
68
68
|
* @returns {void} This method does not return anything
|
|
69
69
|
*/
|
|
70
|
-
static setParameterVal(paramName: any, res: any, operationInfo: any, variable: any): void;
|
|
70
|
+
static setParameterVal(paramName: any, res: any, operationInfo: any, variable: any, options?: any): void;
|
|
71
71
|
/**
|
|
72
72
|
* Creates res object from the response recieved from the api triggered
|
|
73
73
|
* @param variable withholds variable information
|
|
@@ -79,4 +79,13 @@ export declare class PaginationUtils {
|
|
|
79
79
|
* @returns {object} An object which holds the information of pagination which has to be stored on the variable
|
|
80
80
|
*/
|
|
81
81
|
static generatePaginationRes(operationInfo: any, paginationInfo: any, response: any, resHeaders: any, options: any, variable: any): {};
|
|
82
|
+
/**
|
|
83
|
+
* If totalElements has $minValue in it, set totalElements as $minValue
|
|
84
|
+
* If the rendered elements are greater than $minValue, set totalElements as Number of elements rendered + 1
|
|
85
|
+
|
|
86
|
+
* If totalElements is present in the pagination's output metadata deduce totalElements from api's response
|
|
87
|
+
|
|
88
|
+
* If Pagination type is offset, deduce totalElements from size and options[page] else deduce from size and res[page]
|
|
89
|
+
*/
|
|
90
|
+
static setTotalElements(resOutput: any, options: any, res: any, variable: any, response: any, paginationInfo: any, resHeaders: any): void;
|
|
82
91
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jmespath } from '@metrichor/jmespath';
|
|
2
|
-
import
|
|
2
|
+
import { startsWith, find, set, result, get } from 'lodash-es';
|
|
3
3
|
import { getValidJSON } from '../utils';
|
|
4
4
|
import { VARIABLE_CONSTANTS } from '../../constants/variables.constants';
|
|
5
5
|
var PaginationUtils = /** @class */ (function () {
|
|
@@ -87,16 +87,16 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
87
87
|
PaginationUtils.setPaginationItems = function (item, response, res, key, resHeaders) {
|
|
88
88
|
var _a;
|
|
89
89
|
// if the item has body, resolve the expression against the response
|
|
90
|
-
if (
|
|
90
|
+
if (startsWith(item, '$body')) {
|
|
91
91
|
var bodyKey = item.replace('$body.', '');
|
|
92
92
|
try {
|
|
93
93
|
res[key] = jmespath.search(response, bodyKey);
|
|
94
94
|
}
|
|
95
95
|
catch (_b) {
|
|
96
|
-
console.warn(item
|
|
96
|
+
console.warn("".concat(item, " expression needs to be corrected as per JMES guidelines"));
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
-
else if (
|
|
99
|
+
else if (startsWith(item, '$header')) { // if the item has header, resolve the expression against the response headers
|
|
100
100
|
var headerKey = item.replace('$header.', '');
|
|
101
101
|
var headers = Object.fromEntries((resHeaders === null || resHeaders === void 0 ? void 0 : resHeaders.headers) || resHeaders);
|
|
102
102
|
var headerParams = headerKey.split('.');
|
|
@@ -104,7 +104,7 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
104
104
|
res[key] = jmespath.search(headers, headerParams[0].toLowerCase());
|
|
105
105
|
}
|
|
106
106
|
catch (_c) {
|
|
107
|
-
console.warn(item
|
|
107
|
+
console.warn("".concat(item, " expression needs to be corrected as per JMES guidelines"));
|
|
108
108
|
}
|
|
109
109
|
if ((_a = res[key]) === null || _a === void 0 ? void 0 : _a.length) {
|
|
110
110
|
var headerVal = res[key].join();
|
|
@@ -131,7 +131,7 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
131
131
|
res[key] = jmespath.search(headerResp, keyName);
|
|
132
132
|
}
|
|
133
133
|
catch (_d) {
|
|
134
|
-
console.warn(item
|
|
134
|
+
console.warn("".concat(item, " expression needs to be corrected as per JMES guidelines"));
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
}
|
|
@@ -159,14 +159,14 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
159
159
|
* @returns {void} This method does not return anything
|
|
160
160
|
*/
|
|
161
161
|
PaginationUtils.checkPaginationAtQuery = function (operationInfo, variable, options) {
|
|
162
|
-
var _a;
|
|
162
|
+
var _a, _b;
|
|
163
163
|
var paginationInfo = this.getPaginationInfo(operationInfo, variable);
|
|
164
164
|
// If page is not first, pagination is present on the variable and paginationInfo's input meta has size set pagination in query params
|
|
165
165
|
var hasPagination = options && options['page'] && (paginationInfo === null || paginationInfo === void 0 ? void 0 : paginationInfo.input.size) && variable.pagination;
|
|
166
166
|
if (!hasPagination) {
|
|
167
167
|
return;
|
|
168
168
|
}
|
|
169
|
-
var inputParam;
|
|
169
|
+
var inputParam, sizeParam;
|
|
170
170
|
// if pagination type is offset, asssign inputParam to offset else page
|
|
171
171
|
if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {
|
|
172
172
|
inputParam = 'offset';
|
|
@@ -174,8 +174,18 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
174
174
|
else {
|
|
175
175
|
inputParam = 'page';
|
|
176
176
|
}
|
|
177
|
+
if (["page", "offset", "cursor"].includes(paginationInfo.type)) {
|
|
178
|
+
sizeParam = 'size';
|
|
179
|
+
}
|
|
180
|
+
if (sizeParam) {
|
|
181
|
+
var sizeParamName_1 = paginationInfo.input[sizeParam].split('.')[0];
|
|
182
|
+
var sizeParamObj = find(operationInfo.parameters, function (obj) { return obj.name === sizeParamName_1; });
|
|
183
|
+
if (sizeParamObj && sizeParamObj.parameterType === 'query' && ["page", "offset", "cursor"].includes(paginationInfo.type)) {
|
|
184
|
+
variable.pagination['size'] = options['size'] || variable.pagination['size'];
|
|
185
|
+
}
|
|
186
|
+
}
|
|
177
187
|
var paramName = paginationInfo.input[inputParam].split('.')[0];
|
|
178
|
-
var paramObj =
|
|
188
|
+
var paramObj = find(operationInfo.parameters, function (obj) { return obj.name === paramName; });
|
|
179
189
|
// check if the variable has query params and they are not empty
|
|
180
190
|
if (paramObj && paramObj.parameterType === 'query') {
|
|
181
191
|
/**
|
|
@@ -190,6 +200,15 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
190
200
|
}
|
|
191
201
|
this.setPaginationQueryParams(variable, operationInfo, paginationInfo);
|
|
192
202
|
}
|
|
203
|
+
else if (paginationInfo.type === 'cursor') {
|
|
204
|
+
var sParam_1 = (((_b = paginationInfo.input) === null || _b === void 0 ? void 0 : _b.size) && paginationInfo.input['size'].split('.')[0]) || "";
|
|
205
|
+
if (sParam_1) {
|
|
206
|
+
var sParamObj = find(operationInfo.parameters, function (obj) { return obj.name === sParam_1 && obj.parameterType === 'path'; });
|
|
207
|
+
if (sParamObj) {
|
|
208
|
+
sParamObj.sampleValue = options['size'] || variable.pagination['size'] || sParamObj.sampleValue;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
193
212
|
};
|
|
194
213
|
/**
|
|
195
214
|
* Deduces the offset information from the size and page params
|
|
@@ -224,17 +243,24 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
224
243
|
}
|
|
225
244
|
var paramName = paginationInfo.input[inputParam].split('.')[0];
|
|
226
245
|
// check if paramName is present in parameters of operation info
|
|
227
|
-
var paramObj =
|
|
246
|
+
var paramObj = find(operationInfo.parameters, function (obj) {
|
|
247
|
+
if (obj.parameterType === 'body' && inputParam === 'page') {
|
|
248
|
+
return obj.sampleValue.hasOwnProperty(paramName);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
return obj.name === paramName;
|
|
252
|
+
}
|
|
253
|
+
});
|
|
228
254
|
// set page/offset and size from pagination if matched parameter's type is header
|
|
229
255
|
if ((paramObj === null || paramObj === void 0 ? void 0 : paramObj.parameterType) === 'header') {
|
|
230
256
|
var inputBodyParam = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paginationInfo.input[inputParam];
|
|
231
257
|
if (inputParam !== 'offset') {
|
|
232
|
-
|
|
258
|
+
set(reqObj, inputBodyParam, variable.pagination['page']);
|
|
233
259
|
}
|
|
234
260
|
else {
|
|
235
|
-
|
|
261
|
+
set(reqObj, inputBodyParam, this.getOffsetInfo(variable, options));
|
|
236
262
|
}
|
|
237
|
-
|
|
263
|
+
set(reqObj, VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paginationInfo.input.size, variable.pagination['size']);
|
|
238
264
|
var headerKey = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paramName;
|
|
239
265
|
headers[headerKey] = typeof reqObj[headerKey] === 'object' ? JSON.stringify(reqObj[headerKey]) : reqObj[headerKey];
|
|
240
266
|
resObj['headers'] = headers;
|
|
@@ -242,17 +268,24 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
242
268
|
else if ((paramObj === null || paramObj === void 0 ? void 0 : paramObj.parameterType) === 'body') {
|
|
243
269
|
// set page/offset and size from pagination if matched parameter's type is body
|
|
244
270
|
// assign bodyVal to updated pagination info object
|
|
245
|
-
var bodyVal =
|
|
246
|
-
|
|
271
|
+
var bodyVal = void 0;
|
|
272
|
+
try {
|
|
273
|
+
bodyVal = typeof paramObj.sampleValue === 'string' ? JSON.parse(paramObj.sampleValue) : paramObj.sampleValue;
|
|
274
|
+
}
|
|
275
|
+
catch (e) {
|
|
276
|
+
bodyVal = paramObj.sampleValue;
|
|
277
|
+
}
|
|
278
|
+
var bodyParam = inputParam === 'page' ? paginationInfo.input[inputParam] : paginationInfo.input[inputParam].split('.')[1];
|
|
247
279
|
if (bodyVal && bodyVal[bodyParam]) {
|
|
248
280
|
var inputBodyParam = paginationInfo.input[inputParam].split('.').splice(1).join('.');
|
|
249
281
|
if (inputParam !== 'offset') {
|
|
250
|
-
|
|
282
|
+
inputBodyParam = paginationInfo.input[inputParam];
|
|
283
|
+
set(reqObj, inputBodyParam, options.page ? options.page : 1);
|
|
251
284
|
}
|
|
252
285
|
else {
|
|
253
|
-
|
|
286
|
+
set(reqObj, inputBodyParam, this.getOffsetInfo(variable, options));
|
|
254
287
|
}
|
|
255
|
-
|
|
288
|
+
set(reqObj, paginationInfo.input.size.split('.').splice(1).join('.'), variable.pagination['size']);
|
|
256
289
|
bodyVal[bodyParam] = reqObj[bodyParam];
|
|
257
290
|
requestBody = JSON.stringify(bodyVal);
|
|
258
291
|
resObj['requestBody'] = requestBody;
|
|
@@ -294,17 +327,26 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
294
327
|
* For cursor type pagination, if pagination info is present in the query
|
|
295
328
|
* Based on whether user clicks on the next or prev button modify the url's query params
|
|
296
329
|
*/
|
|
330
|
+
var sizeParam_1 = paginationInfo.input['size'].split('.')[0];
|
|
331
|
+
var sizeObj = find(operationInfo.parameters, function (obj) { return obj.name === sizeParam_1; });
|
|
297
332
|
var urlParams = url.split('?');
|
|
298
333
|
var invokeUrl = void 0;
|
|
299
334
|
if (variable.pagination.isNext) {
|
|
300
335
|
invokeUrl = variable.pagination.next.split('?');
|
|
301
336
|
}
|
|
302
|
-
else {
|
|
337
|
+
else if (variable.pagination.isPrev) {
|
|
303
338
|
invokeUrl = variable.pagination.prev.split('?');
|
|
304
339
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
340
|
+
if (invokeUrl) {
|
|
341
|
+
var queryParams = new URLSearchParams(invokeUrl[1]);
|
|
342
|
+
if (sizeObj && sizeObj.sampleValue) {
|
|
343
|
+
queryParams.set(sizeObj.name, sizeObj.sampleValue);
|
|
344
|
+
}
|
|
345
|
+
invokeUrl[1] = queryParams.toString();
|
|
346
|
+
urlParams[1] = invokeUrl[1];
|
|
347
|
+
url = urlParams.join('?');
|
|
348
|
+
resObj['url'] = url;
|
|
349
|
+
}
|
|
308
350
|
}
|
|
309
351
|
}
|
|
310
352
|
return resObj;
|
|
@@ -317,15 +359,18 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
317
359
|
* @param variable withholds variable information
|
|
318
360
|
* @returns {void} This method does not return anything
|
|
319
361
|
*/
|
|
320
|
-
PaginationUtils.setParameterVal = function (paramName, res, operationInfo, variable) {
|
|
362
|
+
PaginationUtils.setParameterVal = function (paramName, res, operationInfo, variable, options) {
|
|
321
363
|
var paginationInfo = this.getPaginationInfo(operationInfo, variable);
|
|
322
364
|
var paginationParams = paginationInfo.input[paramName].split('.');
|
|
323
365
|
var param = paginationParams[0];
|
|
324
|
-
var sizeObj =
|
|
325
|
-
|
|
366
|
+
var sizeObj = find(operationInfo.parameters, function (obj) { return obj.name === param; });
|
|
367
|
+
if (paramName === 'size' && paginationInfo && (paginationInfo.type === 'offset' || paginationInfo.type === 'page') && (options === null || options === void 0 ? void 0 : options.size) && (sizeObj === null || sizeObj === void 0 ? void 0 : sizeObj.sampleValue)) {
|
|
368
|
+
sizeObj.sampleValue = options['size'] || result(sizeObj, 'sampleValue');
|
|
369
|
+
}
|
|
370
|
+
res[paramName] = result(sizeObj, 'sampleValue');
|
|
326
371
|
// if input value is configured from object, fetch the value from the specified path
|
|
327
372
|
if (paginationParams.length > 1) {
|
|
328
|
-
res[paramName] =
|
|
373
|
+
res[paramName] = get(getValidJSON(res[paramName]), paginationInfo.input[paramName].split('.').splice(1).join('.'));
|
|
329
374
|
}
|
|
330
375
|
};
|
|
331
376
|
/**
|
|
@@ -339,6 +384,7 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
339
384
|
* @returns {object} An object which holds the information of pagination which has to be stored on the variable
|
|
340
385
|
*/
|
|
341
386
|
PaginationUtils.generatePaginationRes = function (operationInfo, paginationInfo, response, resHeaders, options, variable) {
|
|
387
|
+
var _a, _b, _c, _d;
|
|
342
388
|
var res = {};
|
|
343
389
|
var resOutput = paginationInfo.output;
|
|
344
390
|
// If pagination type is not cursor, create the following metadata
|
|
@@ -351,7 +397,10 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
351
397
|
this.setPaginationItems(resOutput.size, response, res, 'size', resHeaders);
|
|
352
398
|
}
|
|
353
399
|
else {
|
|
354
|
-
this.setParameterVal('size', res, operationInfo, variable);
|
|
400
|
+
this.setParameterVal('size', res, operationInfo, variable, options);
|
|
401
|
+
}
|
|
402
|
+
if (!(resOutput === null || resOutput === void 0 ? void 0 : resOutput.size) && ((_a = paginationInfo.input) === null || _a === void 0 ? void 0 : _a.size) && paginationInfo.type === 'page') {
|
|
403
|
+
res['size'] = (Number((_b = paginationInfo.input) === null || _b === void 0 ? void 0 : _b.size) ? (_c = paginationInfo.input) === null || _c === void 0 ? void 0 : _c.size : get(response, (_d = paginationInfo.input) === null || _d === void 0 ? void 0 : _d.size)) || res['size'];
|
|
355
404
|
}
|
|
356
405
|
/**
|
|
357
406
|
* If page is present in the pagination's output metadata deduce page from api's response
|
|
@@ -361,38 +410,9 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
361
410
|
this.setPaginationItems(resOutput.page, response, res, 'page', resHeaders);
|
|
362
411
|
}
|
|
363
412
|
else if (paginationInfo.type !== 'offset') {
|
|
364
|
-
this.setParameterVal('page', res, operationInfo, variable);
|
|
365
|
-
}
|
|
366
|
-
/**
|
|
367
|
-
* If totalElements has $minValue in it, set totalElements as $minValue
|
|
368
|
-
* If the rendered elements are greater than $minValue, set totalElements as Number of elements rendered + 1
|
|
369
|
-
|
|
370
|
-
* If totalElements is present in the pagination's output metadata deduce totalElements from api's response
|
|
371
|
-
|
|
372
|
-
* If Pagination type is offset, deduce totalElements from size and options[page] else deduce from size and res[page]
|
|
373
|
-
*/
|
|
374
|
-
if (_.startsWith(resOutput === null || resOutput === void 0 ? void 0 : resOutput.totalElements, '$minValue')) {
|
|
375
|
-
var totalEl = resOutput.totalElements.replace('$minValue=', '');
|
|
376
|
-
var pageParam = res['page'] ? res['page'] : options['page'];
|
|
377
|
-
var elRendered = res['size'] * pageParam;
|
|
378
|
-
if (!variable.pagination || variable.pagination['totalElements'] > elRendered) {
|
|
379
|
-
res['totalElements'] = parseInt(totalEl);
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
res['totalElements'] = elRendered + 1;
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
else if (resOutput === null || resOutput === void 0 ? void 0 : resOutput.totalElements) {
|
|
386
|
-
this.setPaginationItems(resOutput.totalElements, response, res, 'totalElements', resHeaders);
|
|
387
|
-
}
|
|
388
|
-
else {
|
|
389
|
-
if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {
|
|
390
|
-
res['totalElements'] = (res['size'] * (options['page'] ? options['page'] : 1)) + 1;
|
|
391
|
-
}
|
|
392
|
-
else {
|
|
393
|
-
res['totalElements'] = (res['size'] * res['page']) + 1;
|
|
394
|
-
}
|
|
413
|
+
this.setParameterVal('page', res, operationInfo, variable, options);
|
|
395
414
|
}
|
|
415
|
+
this.setTotalElements(resOutput, options, res, variable, response, paginationInfo, resHeaders);
|
|
396
416
|
/**
|
|
397
417
|
* If hasMoreItems is present in the pagination's output metadata deduce hasMoreItems from api's response
|
|
398
418
|
* Else assign it as empty which will be calculated at pagination object generation
|
|
@@ -407,9 +427,44 @@ var PaginationUtils = /** @class */ (function () {
|
|
|
407
427
|
else if (resOutput) { // For cursor type pagination set next and prev keys in res object
|
|
408
428
|
this.setPaginationItems(resOutput.next, response, res, 'next', resHeaders);
|
|
409
429
|
this.setPaginationItems(resOutput.prev, response, res, 'prev', resHeaders);
|
|
430
|
+
this.setPaginationItems(resOutput.size, response, res, 'size', resHeaders);
|
|
431
|
+
this.setParameterVal('page', res, operationInfo, variable, options);
|
|
432
|
+
this.setTotalElements(resOutput, options, res, variable, response, paginationInfo, resHeaders);
|
|
410
433
|
}
|
|
411
434
|
return res;
|
|
412
435
|
};
|
|
436
|
+
/**
|
|
437
|
+
* If totalElements has $minValue in it, set totalElements as $minValue
|
|
438
|
+
* If the rendered elements are greater than $minValue, set totalElements as Number of elements rendered + 1
|
|
439
|
+
|
|
440
|
+
* If totalElements is present in the pagination's output metadata deduce totalElements from api's response
|
|
441
|
+
|
|
442
|
+
* If Pagination type is offset, deduce totalElements from size and options[page] else deduce from size and res[page]
|
|
443
|
+
*/
|
|
444
|
+
PaginationUtils.setTotalElements = function (resOutput, options, res, variable, response, paginationInfo, resHeaders) {
|
|
445
|
+
if (startsWith(resOutput === null || resOutput === void 0 ? void 0 : resOutput.totalElements, '$minValue')) {
|
|
446
|
+
var totalEl = resOutput.totalElements.replace('$minValue=', '');
|
|
447
|
+
var pageParam = res['page'] ? res['page'] : options['page'];
|
|
448
|
+
var elRendered = res['size'] * pageParam;
|
|
449
|
+
if (!variable.pagination || variable.pagination['totalElements'] > elRendered) {
|
|
450
|
+
res['totalElements'] = parseInt(totalEl);
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
453
|
+
res['totalElements'] = elRendered + 1;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
else if (resOutput === null || resOutput === void 0 ? void 0 : resOutput.totalElements) {
|
|
457
|
+
this.setPaginationItems(resOutput.totalElements, response, res, 'totalElements', resHeaders);
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {
|
|
461
|
+
res['totalElements'] = (res['size'] * (options['page'] ? options['page'] : 1)) + 1;
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
res['totalElements'] = (res['size'] * res['page']) + 1;
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
};
|
|
413
468
|
return PaginationUtils;
|
|
414
469
|
}());
|
|
415
470
|
export { PaginationUtils };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.utils.js","sourceRoot":"./","sources":["src/util/variable/pagination.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAC,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAEzE;IAAA;IA2bA,CAAC;IA1bG;;;;;;OAMG;IACI,wCAAwB,GAA/B,UAAgC,QAAQ,EAAE,aAAa,EAAE,cAAc;QACnE,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,OAAO;YACpC,wDAAwD;YACxD,IAAI,UAAU,CAAC;YACf,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClE,UAAU,GAAG,QAAQ,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACJ,UAAU,GAAG,MAAM,CAAC;YACxB,CAAC;YACD,4DAA4D;YAC5D,0HAA0H;YAC1H,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;OAMG;IACI,qCAAqB,GAA5B,UAA6B,QAAQ,EAAE,QAAQ,EAAE,OAAO;QACpD,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACvB,QAAQ,CAAC,UAAU,GAAG;gBAClB,KAAK,EAAE,KAAK;aACf,CAAC;QACN,CAAC;QACD,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC5C,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAI,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;QAClD,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC;QAC9D,QAAQ,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtE,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3E;;;;WAIG;QACH,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,GAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACxG,IAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3E,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;QACxF,CAAC;QAED,iDAAiD;QACjD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC5C,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC5C,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3D,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAChE,CAAC;aAAM,CAAC;YACJ,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YAC/E,iEAAiE;YACjE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC7J,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACI,kCAAkB,GAAzB,UAA0B,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU;;QAC1D,oEAAoE;QACpE,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5B,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC;gBACD,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAClD,CAAC;YAAC,WAAM,CAAC;gBACL,OAAO,CAAC,IAAI,CAAC,UAAG,IAAI,6DAA0D,CAAC,CAAC;YACpF,CAAC;QACL,CAAC;aAAM,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,+EAA+E;YACrH,IAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAM,OAAO,GAAU,MAAO,CAAC,WAAW,CAAC,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,KAAI,UAAU,CAAC,CAAC;YAC9E,IAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACD,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACvE,CAAC;YAAC,WAAM,CAAC;gBACL,OAAO,CAAC,IAAI,CAAC,UAAG,IAAI,6DAA0D,CAAC,CAAC;YACpF,CAAC;YACD,IAAI,MAAA,GAAG,CAAC,GAAG,CAAC,0CAAE,MAAM,EAAE,CAAC;gBACnB,IAAI,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B;;uBAEG;oBACH,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACJ;;;uBAGG;oBACH,IAAI,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC9C,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBACzC,IAAM,WAAW,GAAG,qCAAqC,CAAC;oBAC1D,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC5B,4DAA4D;wBAC5D,kEAAkE;wBAClE,OAAO,GAAG,aAAa,GAAG,OAAO,CAAC;oBACtC,CAAC;oBACD,IAAI,CAAC;wBACD,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBACpD,CAAC;oBAAC,WAAM,CAAC;wBACL,OAAO,CAAC,IAAI,CAAC,UAAG,IAAI,6DAA0D,CAAC,CAAC;oBACpF,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,iCAAiB,GAAxB,UAAyB,aAAa,EAAE,QAAQ;QAC5C,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,cAAc,EAAE,CAAC;YAChC,OAAO,aAAa,CAAC,cAAc,CAAC;QACxC,CAAC;aAAM,CAAC;YACJ,OAAO,QAAQ,CAAC,iBAAiB,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACI,sCAAsB,GAA7B,UAA8B,aAAa,EAAE,QAAQ,EAAE,OAAO;;QAC1D,IAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACvE,sIAAsI;QACtI,IAAM,aAAa,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,KAAI,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,KAAK,CAAC,IAAI,CAAA,IAAI,QAAQ,CAAC,UAAU,CAAC;QACtG,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO;QACX,CAAC;QAED,IAAI,UAAU,EAAC,SAAS,CAAC;QACzB,uEAAuE;QACvE,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClE,UAAU,GAAG,QAAQ,CAAC;QAC1B,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG,MAAM,CAAC;QACxB,CAAC;QACD,IAAG,CAAC,MAAM,EAAC,QAAQ,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,SAAS,GAAG,MAAM,CAAC;QACvB,CAAC;QACD,IAAG,SAAS,EAAE,CAAC;YACX,IAAM,eAAa,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,IAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,eAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3G,IAAI,YAAY,IAAI,YAAY,CAAC,aAAa,KAAK,OAAO,IAAI,CAAC,MAAM,EAAC,QAAQ,EAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrH,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACjF,CAAC;QACL,CAAC;QACD,IAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAS,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,CAAA,CAAC,CAAC,CAAC,CAAC;QACjG,gEAAgE;QAChE,IAAI,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;YACjD;;;eAGG;YACH,IAAI,CAAC,CAAA,MAAA,cAAc,CAAC,MAAM,0CAAE,IAAI,CAAA,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACJ,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAC3E,CAAC;aAAM,IAAG,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,IAAM,QAAM,GAAG,CAAC,CAAA,MAAA,cAAc,CAAC,KAAK,0CAAE,IAAI,KAAI,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChG,IAAG,QAAM,EAAE,CAAC;gBACR,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAS,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAM,IAAI,GAAG,CAAC,aAAa,KAAK,MAAM,CAAA,CAAC,CAAC,CAAC,CAAC;gBAC/H,IAAG,SAAS,EAAE,CAAC;oBACX,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,WAAW,CAAC;gBACpG,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,6BAAa,GAApB,UAAqB,QAAQ,EAAE,OAAO;QAClC,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED;;;;;;;;;;OAUG;IACI,kCAAkB,GAAzB,UAA0B,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO;QACjG,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,UAAU,CAAC;QACf,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,wDAAwD;QACxD,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClE,UAAU,GAAG,QAAQ,CAAC;QAC1B,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG,MAAM,CAAC;QACxB,CAAC;QACD,IAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,iEAAiE;QACjE,IAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAS,GAAG;YACxD,IAAG,GAAG,CAAC,aAAa,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,EAAC,CAAC;gBACtD,OAAO,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;YACpD,CAAC;iBAAI,CAAC;gBACF,OAAO,GAAG,CAAC,IAAI,KAAK,SAAS,CAAA;YACjC,CAAC;QACJ,CAAC,CAAC,CAAC;QACJ,mFAAmF;QACnF,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,MAAK,QAAQ,EAAE,CAAC;YACvC,IAAM,cAAc,GAAI,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnH,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;gBAC1B,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;YAC9H,IAAI,SAAS,GAAG,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC;YACpF,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACnH,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QAChC,CAAC;aAAM,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,MAAK,MAAM,EAAE,CAAC;YAC5C,gFAAgF;YAChF,mDAAmD;YACnD,IAAI,OAAO,SAAK,CAAC;YACjB,IAAI,CAAC;gBACD,OAAO,GAAG,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/G,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC;YACjC,CAAC;YACH,IAAM,SAAS,GAAI,UAAU,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAC5H,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,IAAI,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrF,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;oBAC1B,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAClD,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACJ,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBACvE,CAAC;gBACD,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;gBACnG,OAAO,CAAC,SAAS,CAAC,GAAI,MAAM,CAAC,SAAS,CAAC,CAAC;gBACxC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACtC,MAAM,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC;YACxC,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC9C;;;eAGG;YAEH,IAAI,QAAQ,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;gBACpC,IAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EACvD,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,GAAG,GAAG,EACvC,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAI,SAAS,SAAA,CAAC;gBACd,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC7B,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACJ,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpD,CAAC;gBAED,IAAI,aAAa,SAAA,CAAC;gBAClB,IAAI,OAAO,SAAA,CAAC;gBACZ,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,2EAA2E;oBACvG,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvB,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC5C,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;oBAClD,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3C,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;oBACnB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;gBACxB,CAAC;qBAAM,CAAC,CAAC,iEAAiE;oBACtE,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,aAAa,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;oBACtD,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC9B,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;gBACxB,CAAC;YAEL,CAAC;iBAAM,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;gBAChD;;;mBAGG;gBACC,IAAM,WAAS,GAAI,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,IAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAS,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,WAAS,CAAA,CAAC,CAAC,CAAC,CAAC;gBAChG,IAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,SAAS,SAAA,CAAC;gBACd,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC7B,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpD,CAAC;qBAAM,IAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;oBACnC,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACpD,CAAC;gBACD,IAAG,SAAS,EAAE,CAAC;oBACX,IAAM,WAAW,GAAG,IAAI,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtD,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;wBACjC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;oBACvD,CAAC;oBACD,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;oBACtC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;oBAC3B,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;gBACxB,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,+BAAe,GAAtB,UAAuB,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAQ;QACpE,IAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAM,gBAAgB,GAAI,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrE,IAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAClC,IAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAS,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,KAAK,CAAA,CAAC,CAAC,CAAC,CAAC;QAC5F,IAAG,SAAS,KAAK,MAAM,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,CAAC,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAA,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAA,EAAE,CAAC;YACzJ,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC5E,CAAC;QACD,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,oFAAoF;QACpF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACvH,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACI,qCAAqB,GAA5B,UAA6B,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ;;QAC/F,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC;QACxC,mEAAmE;QACnE,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAA,EAAE,CAAC;YACnB;;;eAGG;YACH,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,EAAE,CAAC;gBAClB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC/E,CAAC;iBAAI,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxE,CAAC;YAED,IAAG,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,CAAA,KAAI,MAAA,cAAc,CAAC,KAAK,0CAAE,IAAI,CAAA,IAAI,cAAc,CAAC,IAAI,KAAK,MAAM,EAAC,CAAC;gBACjF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAA,cAAc,CAAC,KAAK,0CAAE,IAAI,CAAC,CAAC,CAAC,CAAE,MAAA,cAAc,CAAC,KAAK,0CAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAA,cAAc,CAAC,KAAK,0CAAE,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAChJ,CAAC;YACD;;;eAGG;YACH,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,IAAI,EAAE,CAAC;gBAClB,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC/E,CAAC;iBAAM,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1C,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAC,OAAO,EAAC,GAAG,EAAC,QAAQ,EAAC,QAAQ,EAAC,cAAc,EAAC,UAAU,CAAC,CAAC;YACzF;;;eAGG;YACH,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,EAAE,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;YAC/F,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;YAC7B,CAAC;QACL,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC,CAAC,kEAAkE;YACtF,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC3E,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC3E,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC3E,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAC,OAAO,EAAC,GAAG,EAAC,QAAQ,EAAC,QAAQ,EAAC,cAAc,EAAC,UAAU,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IACD;;;;;;;OAOG;IACI,gCAAgB,GAAvB,UAAwB,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU;QAC3F,IAAI,UAAU,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,aAAa,EAAE,WAAW,CAAC,EAAE,CAAC;YACpD,IAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAClE,IAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAC7D,IAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,UAAU,EAAE,CAAC;gBAC5E,GAAG,CAAC,eAAe,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,eAAe,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;aAAM,IAAI,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACJ,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,IAAI,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClE,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACvF,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC;IACL,CAAC;IACL,sBAAC;AAAD,CAAC,AA3bD,IA2bC","sourcesContent":["import { jmespath } from '@metrichor/jmespath';\n\nimport {startsWith, find, set, result, get} from 'lodash-es';\nimport { getValidJSON } from '../utils';\nimport { VARIABLE_CONSTANTS } from '../../constants/variables.constants';\n\nexport class PaginationUtils {\n /**\n * Modifies the query values with the pagination info which is retrieved from the previous API response.\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @param paginationInfo has metadata of the variable pagination data\n * @returns {void} This method does not return anything\n */\n static setPaginationQueryParams(variable, operationInfo, paginationInfo) {\n operationInfo.parameters.forEach(element => {\n // pagination input information varies based on the type\n let inputParam;\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n inputParam = 'offset';\n } else {\n inputParam = 'page';\n }\n // modifies query values based on the pagination of variable\n // compare parameter name with the input parameter's starting naming key (ex: channelcontext in channelcontext.pagination)\n if (element.name === paginationInfo.input[inputParam].split('.')[0]) {\n element.sampleValue = variable.pagination['page'];\n } else if (element.name === paginationInfo.input.size.split('.')[0]) {\n element.sampleValue = variable.pagination['size'];\n }\n });\n }\n\n /**\n * Sets pagination on the variable based on the response of the triggered api call.\n * @param variable withholds variable information \n * @param response has data of the api call's response\n * @param options has info of the api's query params\n * @returns {void} This method does not return anything\n */\n static setVariablePagination(variable, response, options) {\n if (!variable.pagination) {\n variable.pagination = {\n empty: false\n };\n }\n variable.pagination['size'] = response.size;\n variable.pagination['page'] = response.page || 0;\n variable.pagination['totalElements'] = response.totalElements;\n variable.pagination['numberOfElements'] = variable.pagination['size'];\n variable.pagination['number'] = options['page'] ? options['page'] - 1 : 0;\n \n /**\n * Deduce totalPages from totalElements by size.\n * If the total elements are evenly split among the pages, assign the same to totalPages\n * Else assign totalPages + 1\n */\n variable.pagination['totalPages'] = variable.pagination['totalElements'] / variable.pagination['size'];\n if (variable.pagination['totalElements'] % variable.pagination['size'] === 0) {\n variable.pagination['totalPages'] = parseInt(variable.pagination['totalPages']);\n } else {\n variable.pagination['totalPages'] = parseInt(variable.pagination['totalPages']) + 1;\n }\n\n // If pagination type is cursor, fill next & prev\n if (response.next) {\n variable.pagination['next'] = response.next;\n variable.pagination['prev'] = response.prev;\n variable.pagination['last'] = response.next ? false : true;\n variable.pagination['first'] = response.prev ? false : true;\n } else {\n variable.pagination['first'] = variable.pagination['page'] <= 1 ? true : false;\n // calculate last based on current page index against total pages\n variable.pagination['last'] = response.hasMoreItems === '' ? !(variable.pagination['page'] < variable.pagination['totalPages']) : !response.hasMoreItems;\n }\n }\n\n /**\n * Resolves the expression given in pagination metadata's output\n * @param item has value of each key which is inside output pagination metadata\n * @param response has data of the api call's response\n * @param resHeaders has data of the api call's response headers\n * @param res holds the information of pagination which has to be stored on the variable\n * @param key has key name against which data has to be stored in pagination \n * @returns {void} This method does not return anything\n */\n static setPaginationItems(item, response, res, key, resHeaders) {\n // if the item has body, resolve the expression against the response\n if (startsWith(item, '$body')) {\n const bodyKey = item.replace('$body.', '');\n try {\n res[key] = jmespath.search(response, bodyKey);\n } catch {\n console.warn(`${item} expression needs to be corrected as per JMES guidelines`);\n }\n } else if (startsWith(item, '$header')) { // if the item has header, resolve the expression against the response headers \n const headerKey = item.replace('$header.', '');\n const headers = (<any>Object).fromEntries(resHeaders?.headers || resHeaders);\n const headerParams = headerKey.split('.');\n try {\n res[key] = jmespath.search(headers, headerParams[0].toLowerCase());\n } catch {\n console.warn(`${item} expression needs to be corrected as per JMES guidelines`);\n }\n if (res[key]?.length) { \n let headerVal = res[key].join();\n if (headerParams.length === 1) { \n /**\n * If the headerParams has only 1 key (which is not an object) name assing headerVal to the res[key]\n */\n res[key] = headerVal;\n } else { \n /**\n * If the headerParams has more than 1 key (an object), parse the stringified headerVal which is an object\n * Resolve the expression against headerVal object amd assign it to res[key]\n */\n let keyName = headerParams.slice(1).join('.');\n const headerResp = JSON.parse(headerVal);\n const specialChar = /[!@#$%^&*()+\\=\\[\\]{};':\"\\\\|,<>\\/?]+/;\n if (specialChar.test(keyName)) {\n // If key name has expression (ex: comparission expression) \n // add root key name to keyName for JMES to resolve the expression\n keyName = 'headerResp.' + keyName;\n }\n try {\n res[key] = jmespath.search(headerResp, keyName);\n } catch {\n console.warn(`${item} expression needs to be corrected as per JMES guidelines`);\n }\n }\n }\n }\n }\n\n /**\n * Return the pagination information of the service based on its existence on swagger or on the variable\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @returns {object} This method return pagination metadata\n */\n static getPaginationInfo(operationInfo, variable) {\n if (operationInfo?.paginationInfo) {\n return operationInfo.paginationInfo;\n } else {\n return variable._paginationConfig;\n }\n }\n\n /**\n * Set query params with the pagination info, if pagination metadata is present in query params\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @param options has info of the api's query params\n * @returns {void} This method does not return anything\n */\n static checkPaginationAtQuery(operationInfo, variable, options) { \n const paginationInfo = this.getPaginationInfo(operationInfo, variable);\n // If page is not first, pagination is present on the variable and paginationInfo's input meta has size set pagination in query params\n const hasPagination = options && options['page'] && paginationInfo?.input.size && variable.pagination; \n if (!hasPagination) {\n return;\n }\n\n let inputParam,sizeParam;\n // if pagination type is offset, asssign inputParam to offset else page\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n inputParam = 'offset';\n } else {\n inputParam = 'page';\n }\n if([\"page\",\"offset\",\"cursor\"].includes(paginationInfo.type)) {\n sizeParam = 'size';\n }\n if(sizeParam) {\n const sizeParamName = paginationInfo.input[sizeParam].split('.')[0];\n const sizeParamObj = find(operationInfo.parameters, function (obj) { return obj.name === sizeParamName; });\n if (sizeParamObj && sizeParamObj.parameterType === 'query' && [\"page\",\"offset\",\"cursor\"].includes(paginationInfo.type)) {\n variable.pagination['size'] = options['size'] || variable.pagination['size'];\n }\n }\n const paramName = paginationInfo.input[inputParam].split('.')[0]; \n const paramObj = find(operationInfo.parameters, function(obj) { return obj.name === paramName }); \n // check if the variable has query params and they are not empty\n if (paramObj && paramObj.parameterType === 'query') {\n /**\n * For pagination type other than offset, assign page which is recieved from options\n * For offset type, calculate page from size and options[page]\n */\n if (!paginationInfo.output?.page && paginationInfo.type !== 'offset') {\n variable.pagination['page'] = options['page'];\n } else {\n variable.pagination['page'] = this.getOffsetInfo(variable, options);\n }\n this.setPaginationQueryParams(variable, operationInfo, paginationInfo); \n } else if(paginationInfo.type === 'cursor') {\n const sParam = (paginationInfo.input?.size && paginationInfo.input['size'].split('.')[0]) || \"\";\n if(sParam) {\n const sParamObj = find(operationInfo.parameters, function(obj) { return obj.name === sParam && obj.parameterType === 'path' });\n if(sParamObj) {\n sParamObj.sampleValue = options['size'] || variable.pagination['size'] || sParamObj.sampleValue;\n }\n }\n }\n }\n\n /**\n * Deduces the offset information from the size and page params\n * @param variable withholds variable information \n * @param options has info of the api's query params\n * @returns {object} Returns the next offset number\n */\n static getOffsetInfo(variable, options) {\n return variable.pagination['size'] * (options['page'] ? (options['page'] - 1) : 0);\n }\n\n /**\n * Sets Pagination data on the request information\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable \n * @param options has info of the api's query params\n * @param paginationInfo has pagination information of the variable\n * @param headers has request headers\n * @param requestBody has request body\n * @param url has request url\n * @returns {object} Returns the request object which has pagination info\n */\n static setPaginationAtReq(paginationInfo, operationInfo, variable, headers, requestBody, url, options) {\n let reqObj = {};\n let inputParam;\n let resObj = {};\n // pagination input information varies based on the type\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n inputParam = 'offset';\n } else {\n inputParam = 'page';\n }\n const paramName = paginationInfo.input[inputParam].split('.')[0]; \n // check if paramName is present in parameters of operation info \n const paramObj = find(operationInfo.parameters, function(obj) { \n if(obj.parameterType === 'body' && inputParam === 'page'){\n return obj.sampleValue.hasOwnProperty(paramName)\n }else{\n return obj.name === paramName\n }\n }); \n // set page/offset and size from pagination if matched parameter's type is header \n if (paramObj?.parameterType === 'header') {\n const inputBodyParam = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paginationInfo.input[inputParam]; \n if (inputParam !== 'offset') { \n set(reqObj, inputBodyParam, variable.pagination['page']);\n } else {\n set(reqObj, inputBodyParam, this.getOffsetInfo(variable, options));\n }\n set(reqObj, VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paginationInfo.input.size, variable.pagination['size']);\n let headerKey = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY + paramName;\n headers[headerKey] = typeof reqObj[headerKey] === 'object' ? JSON.stringify(reqObj[headerKey]) : reqObj[headerKey];\n resObj['headers'] = headers;\n } else if (paramObj?.parameterType === 'body') { \n // set page/offset and size from pagination if matched parameter's type is body \n // assign bodyVal to updated pagination info object\n let bodyVal: any;\n try {\n bodyVal = typeof paramObj.sampleValue === 'string' ? JSON.parse(paramObj.sampleValue) : paramObj.sampleValue;\n } catch (e) {\n bodyVal = paramObj.sampleValue;\n }\n const bodyParam = inputParam === 'page' ? paginationInfo.input[inputParam] : paginationInfo.input[inputParam].split('.')[1]\n if (bodyVal && bodyVal[bodyParam]) {\n let inputBodyParam = paginationInfo.input[inputParam].split('.').splice(1).join('.'); \n if (inputParam !== 'offset') { \n inputBodyParam = paginationInfo.input[inputParam]; \n set(reqObj, inputBodyParam, options.page ? options.page : 1);\n } else {\n set(reqObj, inputBodyParam, this.getOffsetInfo(variable, options));\n }\n set(reqObj, paginationInfo.input.size.split('.').splice(1).join('.'), variable.pagination['size']);\n bodyVal[bodyParam] = reqObj[bodyParam];\n requestBody = JSON.stringify(bodyVal);\n resObj['requestBody'] = requestBody;\n }\n } else if (variable.pagination.next && paramObj) {\n /**\n * For cursor type pagination, if pagination info is present in the path \n * Based on whether user clicks on the next or prev button modify the url \n */\n \n if (paramObj.parameterType === 'path') {\n const urlParams = operationInfo.relativePath.split('/'),\n paramConfig = '{' + paramObj.name + '}',\n paramIndex = urlParams.indexOf(paramConfig);\n let invokeUrl;\n if (variable.pagination.isNext) {\n invokeUrl = variable.pagination.next.split('/');\n } else {\n invokeUrl = variable.pagination.prev.split('/');\n }\n\n let urlPathParmas;\n let urlPath;\n if (operationInfo.directPath) { // For direct path, as url has hostname, derivate pathname using URL object\n urlPath = new URL(url);\n urlPathParmas = urlPath.pathname.split('/');\n urlPathParmas[paramIndex] = invokeUrl[paramIndex];\n urlPath.pathname = urlPathParmas.join('/');\n url = urlPath.href;\n resObj['url'] = url;\n } else { // Else modify the url with index as +1 (following proxy pattern)\n urlPathParmas = url.split('/');\n urlPathParmas[paramIndex + 1] = invokeUrl[paramIndex];\n url = urlPathParmas.join('/');\n resObj['url'] = url;\n }\n\n } else if (paramObj.parameterType === 'query') {\n /**\n * For cursor type pagination, if pagination info is present in the query \n * Based on whether user clicks on the next or prev button modify the url's query params\n */\n const sizeParam = paginationInfo.input['size'].split('.')[0];\n const sizeObj = find(operationInfo.parameters, function(obj) { return obj.name === sizeParam });\n const urlParams = url.split('?');\n let invokeUrl;\n if (variable.pagination.isNext) {\n invokeUrl = variable.pagination.next.split('?');\n } else if(variable.pagination.isPrev) {\n invokeUrl = variable.pagination.prev.split('?');\n }\n if(invokeUrl) {\n const queryParams = new URLSearchParams(invokeUrl[1]);\n if (sizeObj && sizeObj.sampleValue) {\n queryParams.set(sizeObj.name, sizeObj.sampleValue);\n }\n invokeUrl[1] = queryParams.toString();\n urlParams[1] = invokeUrl[1]\n url = urlParams.join('?');\n resObj['url'] = url;\n }\n }\n }\n return resObj; \n }\n\n /**\n * Sets the pagination info recieved from api's response in the res object\n * @param operationInfo has metadata of the variable\n * @param res holds the information of pagination which has to be stored on the variable\n * @param paramName has key name against which data has to be stored in pagination\n * @param variable withholds variable information \n * @returns {void} This method does not return anything\n */\n static setParameterVal(paramName, res, operationInfo, variable, options?) {\n const paginationInfo = this.getPaginationInfo(operationInfo, variable);\n const paginationParams = paginationInfo.input[paramName].split('.');\n const param = paginationParams[0]; \n const sizeObj = find(operationInfo.parameters, function(obj) { return obj.name === param });\n if(paramName === 'size' && paginationInfo && (paginationInfo.type === 'offset' || paginationInfo.type === 'page') && options?.size && sizeObj?.sampleValue) {\n sizeObj.sampleValue = options['size'] || result(sizeObj, 'sampleValue');\n }\n res[paramName] = result(sizeObj, 'sampleValue');\n // if input value is configured from object, fetch the value from the specified path\n if (paginationParams.length > 1) {\n res[paramName] = get(getValidJSON(res[paramName]), paginationInfo.input[paramName].split('.').splice(1).join('.'));\n }\n }\n\n /**\n * Creates res object from the response recieved from the api triggered\n * @param variable withholds variable information \n * @param operationInfo has metadata of the variable\n * @param paginationInfo has metadata of the variable's pagination\n * @param response has data of the api call's response\n * @param options has info of the api's query params\n * @param resHeaders has data of the api call's response headers\n * @returns {object} An object which holds the information of pagination which has to be stored on the variable\n */\n static generatePaginationRes(operationInfo, paginationInfo, response, resHeaders, options, variable) {\n let res = {};\n const resOutput = paginationInfo.output;\n // If pagination type is not cursor, create the following metadata \n if (!resOutput?.next) {\n /**\n * If size is present in the pagination's output metadata deduce size from api's response\n * Else deduce size from the pagination's input metadata size key\n */\n if (resOutput?.size) {\n this.setPaginationItems(resOutput.size, response, res, 'size', resHeaders);\n }else{ \n this.setParameterVal('size', res, operationInfo, variable, options);\n }\n \n if(!resOutput?.size && paginationInfo.input?.size && paginationInfo.type === 'page'){\n res['size'] = (Number(paginationInfo.input?.size) ? paginationInfo.input?.size : get(response, paginationInfo.input?.size)) || res['size'];\n }\n /**\n * If page is present in the pagination's output metadata deduce page from api's response\n * Else deduce page from the pagination's input metadata page key\n */\n if (resOutput?.page) {\n this.setPaginationItems(resOutput.page, response, res, 'page', resHeaders);\n } else if (paginationInfo.type !== 'offset') {\n this.setParameterVal('page', res, operationInfo, variable, options);\n }\n this.setTotalElements(resOutput,options,res,variable,response,paginationInfo,resHeaders);\n /**\n * If hasMoreItems is present in the pagination's output metadata deduce hasMoreItems from api's response\n * Else assign it as empty which will be calculated at pagination object generation\n */\n if (resOutput?.hasMoreItems) {\n this.setPaginationItems(resOutput.hasMoreItems, response, res, 'hasMoreItems', resHeaders);\n } else {\n res['hasMoreItems'] = '';\n }\n } else if (resOutput) { // For cursor type pagination set next and prev keys in res object\n this.setPaginationItems(resOutput.next, response, res, 'next', resHeaders);\n this.setPaginationItems(resOutput.prev, response, res, 'prev', resHeaders);\n this.setPaginationItems(resOutput.size, response, res, 'size', resHeaders);\n this.setParameterVal('page', res, operationInfo, variable, options);\n this.setTotalElements(resOutput,options,res,variable,response,paginationInfo,resHeaders);\n }\n return res;\n }\n /**\n * If totalElements has $minValue in it, set totalElements as $minValue\n * If the rendered elements are greater than $minValue, set totalElements as Number of elements rendered + 1\n\n * If totalElements is present in the pagination's output metadata deduce totalElements from api's response\n\n * If Pagination type is offset, deduce totalElements from size and options[page] else deduce from size and res[page]\n */\n static setTotalElements(resOutput, options, res, variable, response, paginationInfo, resHeaders) {\n if (startsWith(resOutput?.totalElements, '$minValue')) {\n const totalEl = resOutput.totalElements.replace('$minValue=', '');\n const pageParam = res['page'] ? res['page'] : options['page']\n const elRendered = res['size'] * pageParam;\n if (!variable.pagination || variable.pagination['totalElements'] > elRendered) {\n res['totalElements'] = parseInt(totalEl);\n } else {\n res['totalElements'] = elRendered + 1;\n }\n } else if (resOutput?.totalElements) {\n this.setPaginationItems(resOutput.totalElements, response, res, 'totalElements', resHeaders);\n } else {\n if (paginationInfo.type === 'offset' || paginationInfo.input.offset) {\n res['totalElements'] = (res['size'] * (options['page'] ? options['page'] : 1)) + 1;\n } else {\n res['totalElements'] = (res['size'] * res['page']) + 1;\n }\n }\n }\n}"]}
|