@wavemaker-ai/variables 1.0.0-rc.647469
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/index.d.ts +14 -0
- package/index.js +15 -0
- package/index.js.map +1 -0
- package/npm-shrinkwrap.json +1967 -0
- package/package-lock.json +1967 -0
- package/package.json +48 -0
- package/scripts/build.d.ts +1 -0
- package/scripts/build.js +183 -0
- package/scripts/build.js.map +1 -0
- package/src/advanced-options.d.ts +4 -0
- package/src/advanced-options.js +2 -0
- package/src/advanced-options.js.map +1 -0
- package/src/constants/variables.constants.d.ts +307 -0
- package/src/constants/variables.constants.js +334 -0
- package/src/constants/variables.constants.js.map +1 -0
- package/src/factory/variable-manager.factory.d.ts +3 -0
- package/src/factory/variable-manager.factory.js +26 -0
- package/src/factory/variable-manager.factory.js.map +1 -0
- package/src/manager/action/timer-action.manager.d.ts +4 -0
- package/src/manager/action/timer-action.manager.js +38 -0
- package/src/manager/action/timer-action.manager.js.map +1 -0
- package/src/manager/variable/base-variable.manager.d.ts +24 -0
- package/src/manager/variable/base-variable.manager.js +79 -0
- package/src/manager/variable/base-variable.manager.js.map +1 -0
- package/src/manager/variable/crud-variable.manager.d.ts +85 -0
- package/src/manager/variable/crud-variable.manager.js +415 -0
- package/src/manager/variable/crud-variable.manager.js.map +1 -0
- package/src/manager/variable/live-variable.manager.d.ts +154 -0
- package/src/manager/variable/live-variable.manager.js +1078 -0
- package/src/manager/variable/live-variable.manager.js.map +1 -0
- package/src/manager/variable/model-variable.manager.d.ts +4 -0
- package/src/manager/variable/model-variable.manager.js +56 -0
- package/src/manager/variable/model-variable.manager.js.map +1 -0
- package/src/manager/variable/service-variable.manager.d.ts +113 -0
- package/src/manager/variable/service-variable.manager.js +713 -0
- package/src/manager/variable/service-variable.manager.js.map +1 -0
- package/src/model/action/timer-action.d.ts +12 -0
- package/src/model/action/timer-action.js +60 -0
- package/src/model/action/timer-action.js.map +1 -0
- package/src/model/base-action.d.ts +32 -0
- package/src/model/base-action.js +89 -0
- package/src/model/base-action.js.map +1 -0
- package/src/model/base-variable.d.ts +58 -0
- package/src/model/base-variable.js +180 -0
- package/src/model/base-variable.js.map +1 -0
- package/src/model/crud-create.d.ts +8 -0
- package/src/model/crud-create.js +17 -0
- package/src/model/crud-create.js.map +1 -0
- package/src/model/crud-delete.d.ts +8 -0
- package/src/model/crud-delete.js +17 -0
- package/src/model/crud-delete.js.map +1 -0
- package/src/model/crud-list.d.ts +8 -0
- package/src/model/crud-list.js +17 -0
- package/src/model/crud-list.js.map +1 -0
- package/src/model/crud-update.d.ts +8 -0
- package/src/model/crud-update.js +17 -0
- package/src/model/crud-update.js.map +1 -0
- package/src/model/variable/api-aware-variable.d.ts +23 -0
- package/src/model/variable/api-aware-variable.js +25 -0
- package/src/model/variable/api-aware-variable.js.map +1 -0
- package/src/model/variable/crud-variable.d.ts +30 -0
- package/src/model/variable/crud-variable.js +181 -0
- package/src/model/variable/crud-variable.js.map +1 -0
- package/src/model/variable/live-variable.d.ts +40 -0
- package/src/model/variable/live-variable.js +262 -0
- package/src/model/variable/live-variable.js.map +1 -0
- package/src/model/variable/model-variable.d.ts +11 -0
- package/src/model/variable/model-variable.js +83 -0
- package/src/model/variable/model-variable.js.map +1 -0
- package/src/model/variable/service-variable.d.ts +35 -0
- package/src/model/variable/service-variable.js +147 -0
- package/src/model/variable/service-variable.js.map +1 -0
- package/src/types/date-formatter.d.ts +3 -0
- package/src/types/date-formatter.js +2 -0
- package/src/types/date-formatter.js.map +1 -0
- package/src/types/event-notifier.d.ts +9 -0
- package/src/types/event-notifier.js +25 -0
- package/src/types/event-notifier.js.map +1 -0
- package/src/types/http-client.service.d.ts +8 -0
- package/src/types/http-client.service.js +2 -0
- package/src/types/http-client.service.js.map +1 -0
- package/src/types/types.d.ts +50 -0
- package/src/types/types.js +54 -0
- package/src/types/types.js.map +1 -0
- package/src/util/dataset-util.d.ts +27 -0
- package/src/util/dataset-util.js +147 -0
- package/src/util/dataset-util.js.map +1 -0
- package/src/util/file-upload.util.d.ts +11 -0
- package/src/util/file-upload.util.js +183 -0
- package/src/util/file-upload.util.js.map +1 -0
- package/src/util/inflight-queue.d.ts +35 -0
- package/src/util/inflight-queue.js +102 -0
- package/src/util/inflight-queue.js.map +1 -0
- package/src/util/notify-promise.d.ts +3 -0
- package/src/util/notify-promise.js +37 -0
- package/src/util/notify-promise.js.map +1 -0
- package/src/util/oAuth.utils.d.ts +3 -0
- package/src/util/oAuth.utils.js +11 -0
- package/src/util/oAuth.utils.js.map +1 -0
- package/src/util/utils.d.ts +69 -0
- package/src/util/utils.js +364 -0
- package/src/util/utils.js.map +1 -0
- package/src/util/variable/live-variable.http.utils.d.ts +21 -0
- package/src/util/variable/live-variable.http.utils.js +212 -0
- package/src/util/variable/live-variable.http.utils.js.map +1 -0
- package/src/util/variable/live-variable.utils.d.ts +72 -0
- package/src/util/variable/live-variable.utils.js +667 -0
- package/src/util/variable/live-variable.utils.js.map +1 -0
- package/src/util/variable/pagination.utils.d.ts +91 -0
- package/src/util/variable/pagination.utils.js +493 -0
- package/src/util/variable/pagination.utils.js.map +1 -0
- package/src/util/variable/service-variable.utils.d.ts +17 -0
- package/src/util/variable/service-variable.utils.js +394 -0
- package/src/util/variable/service-variable.utils.js.map +1 -0
- package/src/util/variable/variables.utils.d.ts +120 -0
- package/src/util/variable/variables.utils.js +544 -0
- package/src/util/variable/variables.utils.js.map +1 -0
- package/src/wm-namespace.d.ts +11 -0
- package/src/wm-namespace.js +13 -0
- package/src/wm-namespace.js.map +1 -0
- package/webpack.config.d.ts +21 -0
- package/webpack.config.js +28 -0
- package/webpack.config.js.map +1 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import { extractType, isDefined, isDateTimeType, getBlob, replace } from "../../util/utils";
|
|
2
|
+
import { $rootScope, CONSTANTS, SWAGGER_CONSTANTS, VARIABLE_CONSTANTS, WS_CONSTANTS } from '../../constants/variables.constants';
|
|
3
|
+
import { isFileUploadSupported } from './variables.utils';
|
|
4
|
+
import { getAccessToken } from './../oAuth.utils';
|
|
5
|
+
import { formatDate } from "./variables.utils";
|
|
6
|
+
import { PaginationUtils } from '../../util/variable/pagination.utils';
|
|
7
|
+
import { includes, toLower, get, isObject, isArray, forEach, isUndefined, join, isEmpty, isNull, concat, toUpper, map, reject } from 'lodash-es';
|
|
8
|
+
/**
|
|
9
|
+
* returns true if a Service variable is:
|
|
10
|
+
* - for a query/procedure
|
|
11
|
+
* - performs a PUT/POST operation, i.e, takes a Request Body as input
|
|
12
|
+
* @param variable
|
|
13
|
+
* @returns {any}
|
|
14
|
+
*/
|
|
15
|
+
var isBodyTypeQueryOrProcedure = function (variable) {
|
|
16
|
+
return (includes(['QueryExecution', 'ProcedureExecution'], variable.controller)) && (includes(['put', 'post'], variable.operationType));
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* returns true if the variable is a Query service variable
|
|
20
|
+
* @param {string} controller
|
|
21
|
+
* @param {string} serviceType
|
|
22
|
+
* @returns {boolean}
|
|
23
|
+
*/
|
|
24
|
+
var isQueryServiceVar = function (controller, serviceType) {
|
|
25
|
+
return controller === VARIABLE_CONSTANTS.CONTROLLER_TYPE.QUERY && serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.DATA;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Append given value to the formdata
|
|
29
|
+
* @param formData
|
|
30
|
+
* @param param - Param from which value has to be taken
|
|
31
|
+
* @param paramValue - Value which is to be appended to formdata
|
|
32
|
+
*/
|
|
33
|
+
var getFormData = function (formData, param, paramValue) {
|
|
34
|
+
var paramType = toLower(extractType(get(param, 'items.type') || param.type)), paramContentType = CONSTANTS.isStudioMode ? param['x-WM-CONTENT_TYPE'] : param.contentType;
|
|
35
|
+
if (isFileUploadSupported()) {
|
|
36
|
+
if ((paramType !== 'file') && (paramContentType === 'string' || !paramContentType)) {
|
|
37
|
+
if (isObject(paramValue)) {
|
|
38
|
+
paramValue = JSON.stringify(paramValue);
|
|
39
|
+
}
|
|
40
|
+
formData.append(param.name, paramValue);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
if (isArray(paramValue) && paramType === 'file') {
|
|
44
|
+
forEach(paramValue, function (fileObject) {
|
|
45
|
+
formData.append(param.name, (fileObject && fileObject.content) || getBlob(fileObject), fileObject.name);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
formData.append(param.name, getBlob(paramValue, paramContentType), paramValue && paramValue.name);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return formData;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Check for missing required params and format the date/time param values
|
|
57
|
+
* @param inputData
|
|
58
|
+
* @param params
|
|
59
|
+
* @returns {{requestBody: {}; missingParams: any[]}}
|
|
60
|
+
*/
|
|
61
|
+
var processRequestBody = function (inputData, params, variable) {
|
|
62
|
+
var requestBody = {}, missingParams = [];
|
|
63
|
+
var paramValue;
|
|
64
|
+
forEach(params, function (param) {
|
|
65
|
+
paramValue = get(inputData, param.name);
|
|
66
|
+
if (!isUndefined(paramValue) && paramValue !== '' && paramValue !== null && !param.readOnly) {
|
|
67
|
+
// ToDo - variable seperation
|
|
68
|
+
paramValue = isDateTimeType(param.type) ? formatDate(paramValue, param.type, variable.dateFormatter) : paramValue;
|
|
69
|
+
// Construct ',' separated string if param is not array type but value is an array
|
|
70
|
+
if (isArray(paramValue) && toLower(extractType(param.type)) === 'string') {
|
|
71
|
+
paramValue = join(paramValue, ',');
|
|
72
|
+
}
|
|
73
|
+
requestBody[param.name] = paramValue;
|
|
74
|
+
}
|
|
75
|
+
else if (param.required) {
|
|
76
|
+
missingParams.push(param.name || param.id);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return {
|
|
80
|
+
'requestBody': requestBody,
|
|
81
|
+
'missingParams': missingParams
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Done only for HTTP calls made via the proxy server
|
|
86
|
+
* Goes though request headers, appends 'X-' to certain headers
|
|
87
|
+
* these headers need not be processed at proxy server and should directly be passed to the server
|
|
88
|
+
* e.g. Authorization, Cookie, etc.
|
|
89
|
+
* @param headers
|
|
90
|
+
* @returns {{}}
|
|
91
|
+
*/
|
|
92
|
+
var cloakHeadersForProxy = function (headers) {
|
|
93
|
+
var _headers = {}, UNCLOAKED_HEADERS = VARIABLE_CONSTANTS.REST_SERVICE.UNCLOAKED_HEADERS, CLOAK_PREFIX = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY;
|
|
94
|
+
forEach(headers, function (val, key) {
|
|
95
|
+
if (includes(UNCLOAKED_HEADERS, key.toUpperCase())) {
|
|
96
|
+
_headers[key] = val;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
_headers[CLOAK_PREFIX + key] = val;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
return _headers;
|
|
103
|
+
};
|
|
104
|
+
var ServiceVariableUtils = /** @class */ (function () {
|
|
105
|
+
function ServiceVariableUtils() {
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* prepares the HTTP request info for a Service Variable
|
|
109
|
+
* @param variable
|
|
110
|
+
* @param operationInfo
|
|
111
|
+
* @param inputFields
|
|
112
|
+
* @returns {any}
|
|
113
|
+
*/
|
|
114
|
+
ServiceVariableUtils.constructRequestParams = function (variable, operationInfo, inputFields, options) {
|
|
115
|
+
variable = variable || {};
|
|
116
|
+
// operationInfo is specifically null for un_authorized access
|
|
117
|
+
if (operationInfo === null) {
|
|
118
|
+
return {
|
|
119
|
+
'error': {
|
|
120
|
+
'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.USER_UNAUTHORISED,
|
|
121
|
+
'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.USER_UNAUTHORISED,
|
|
122
|
+
'field': '_wmServiceOperationInfo'
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
else if (isEmpty(operationInfo)) {
|
|
127
|
+
return {
|
|
128
|
+
'error': {
|
|
129
|
+
'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.METADATA_MISSING,
|
|
130
|
+
'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.METADATA_MISSING,
|
|
131
|
+
'field': '_wmServiceOperationInfo'
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
else if (operationInfo && operationInfo.invalid) {
|
|
136
|
+
return {
|
|
137
|
+
'error': {
|
|
138
|
+
'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.CRUD_OPERATION_MISSING,
|
|
139
|
+
'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.CRUD_OPERATION_MISSING,
|
|
140
|
+
'field': '_wmServiceOperationInfo'
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
var directPath = operationInfo.directPath || '', relativePath = operationInfo.basePath ? operationInfo.basePath + operationInfo.relativePath : operationInfo.relativePath, isBodyTypeQueryProcedure = isBodyTypeQueryOrProcedure(variable);
|
|
145
|
+
var queryParams = '', bodyInfo, headers = {}, requestBody, url, requiredParamMissing = [], target, pathParamRex, invokeParams, authDetails = null, uname, pswd, method, formData, isProxyCall, paramValueInfo, params, securityDefnObj, accessToken, withCredentials;
|
|
146
|
+
function getFormDataObj() {
|
|
147
|
+
if (formData) {
|
|
148
|
+
return formData;
|
|
149
|
+
}
|
|
150
|
+
formData = new FormData();
|
|
151
|
+
return formData;
|
|
152
|
+
}
|
|
153
|
+
securityDefnObj = get(operationInfo.securityDefinitions, '0');
|
|
154
|
+
if (securityDefnObj) {
|
|
155
|
+
switch (securityDefnObj.type) {
|
|
156
|
+
case VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.OAUTH2:
|
|
157
|
+
accessToken = getAccessToken(securityDefnObj[VARIABLE_CONSTANTS.REST_SERVICE.OAUTH_PROVIDER_KEY], null);
|
|
158
|
+
if (accessToken) {
|
|
159
|
+
headers[VARIABLE_CONSTANTS.REST_SERVICE.AUTH_HDR_KEY] = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.AUTH_HDR_VAL.OAUTH + ' ' + accessToken;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
return {
|
|
163
|
+
'error': {
|
|
164
|
+
'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.NO_ACCESSTOKEN,
|
|
165
|
+
'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.NO_ACCESSTOKEN
|
|
166
|
+
},
|
|
167
|
+
'securityDefnObj': securityDefnObj
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
break;
|
|
171
|
+
case VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.BASIC:
|
|
172
|
+
uname = inputFields['wm_auth_username'];
|
|
173
|
+
pswd = inputFields['wm_auth_password'];
|
|
174
|
+
if (uname && pswd) {
|
|
175
|
+
// TODO[VIBHU]: bas64 encoding alternative.
|
|
176
|
+
headers[VARIABLE_CONSTANTS.REST_SERVICE.AUTH_HDR_KEY] = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.AUTH_HDR_VAL.BASIC + ' ' + btoa(uname + ':' + pswd);
|
|
177
|
+
authDetails = {
|
|
178
|
+
'type': VARIABLE_CONSTANTS.REST_SERVICE.AUTH_TYPE.BASIC
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
return {
|
|
183
|
+
'error': {
|
|
184
|
+
'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.NO_CREDENTIALS,
|
|
185
|
+
'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.NO_CREDENTIALS
|
|
186
|
+
},
|
|
187
|
+
'securityDefnObj': securityDefnObj
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// set query params, if pagination info is present and the info should be present in query
|
|
194
|
+
PaginationUtils.checkPaginationAtQuery(operationInfo, variable, options);
|
|
195
|
+
operationInfo.proxySettings = operationInfo.proxySettings || { web: true, mobile: false };
|
|
196
|
+
method = operationInfo.httpMethod || operationInfo.methodType;
|
|
197
|
+
isProxyCall = (function () {
|
|
198
|
+
// ToDo - variable seperation
|
|
199
|
+
// if (CONSTANTS.hasCordova) {
|
|
200
|
+
return operationInfo.proxySettings.mobile;
|
|
201
|
+
// }
|
|
202
|
+
return operationInfo.proxySettings.web;
|
|
203
|
+
}());
|
|
204
|
+
withCredentials = operationInfo.proxySettings.withCredentials;
|
|
205
|
+
url = isProxyCall ? relativePath : directPath;
|
|
206
|
+
/* loop through all the parameters */
|
|
207
|
+
forEach(operationInfo.parameters, function (param) {
|
|
208
|
+
// Set params based on current workspace
|
|
209
|
+
function setParamsOfChildNode() {
|
|
210
|
+
if (inputFields) {
|
|
211
|
+
// specific case for body type query/procedure variable with query params
|
|
212
|
+
if (inputFields[param.name] && isObject(inputFields[param.name])) {
|
|
213
|
+
paramValueInfo = inputFields[param.name];
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
paramValueInfo = inputFields;
|
|
217
|
+
}
|
|
218
|
+
params = get(operationInfo, ['definitions', param.type]);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
// For Api Designer
|
|
222
|
+
paramValueInfo = paramValue || {};
|
|
223
|
+
params = param.children;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
var paramValue = param.sampleValue;
|
|
227
|
+
if ((isDefined(paramValue) && paramValue !== null && paramValue !== '') || (isBodyTypeQueryProcedure && param.type !== 'file')) {
|
|
228
|
+
// Format dateTime params for dataService variables
|
|
229
|
+
if (variable.serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.DATA && isDateTimeType(param.type)) {
|
|
230
|
+
// ToDo - variable seperation
|
|
231
|
+
paramValue = formatDate(paramValue, param.type, variable.dateFormatter);
|
|
232
|
+
}
|
|
233
|
+
// Construct ',' separated string if param is not array type but value is an array
|
|
234
|
+
if (isArray(paramValue) && toLower(extractType(param.type)) === 'string' && variable.serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.DATA) {
|
|
235
|
+
paramValue = join(paramValue, ',');
|
|
236
|
+
}
|
|
237
|
+
switch (param.parameterType.toUpperCase()) {
|
|
238
|
+
case 'QUERY':
|
|
239
|
+
// Ignore null valued query params for queryService variable
|
|
240
|
+
if (isNull(paramValue) && isQueryServiceVar(variable.controller, variable.serviceType)) {
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
if (!queryParams) {
|
|
244
|
+
queryParams = '?' + param.name + '=' + encodeURIComponent(paramValue);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
queryParams += '&' + param.name + '=' + encodeURIComponent(paramValue);
|
|
248
|
+
}
|
|
249
|
+
break;
|
|
250
|
+
case 'PATH':
|
|
251
|
+
/* replacing the path param based on the regular expression in the relative path */
|
|
252
|
+
pathParamRex = new RegExp('\\s*\\{\\s*' + param.name + '(:\\.\\+)?\\s*\\}\\s*');
|
|
253
|
+
url = url.replace(pathParamRex, paramValue);
|
|
254
|
+
break;
|
|
255
|
+
case 'HEADER':
|
|
256
|
+
headers[param.name] = paramValue;
|
|
257
|
+
break;
|
|
258
|
+
case 'BODY':
|
|
259
|
+
// For post/put query methods wrap the input
|
|
260
|
+
if (isBodyTypeQueryProcedure) {
|
|
261
|
+
setParamsOfChildNode();
|
|
262
|
+
bodyInfo = processRequestBody(paramValueInfo, params, variable);
|
|
263
|
+
requestBody = bodyInfo.requestBody;
|
|
264
|
+
requiredParamMissing = concat(requiredParamMissing, bodyInfo.missingParams);
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
requestBody = paramValue;
|
|
268
|
+
}
|
|
269
|
+
break;
|
|
270
|
+
case 'FORMDATA':
|
|
271
|
+
if (isBodyTypeQueryProcedure && param.name === SWAGGER_CONSTANTS.WM_DATA_JSON) {
|
|
272
|
+
setParamsOfChildNode();
|
|
273
|
+
// Process query/procedure formData non-file params params
|
|
274
|
+
bodyInfo = processRequestBody(paramValueInfo, params, variable);
|
|
275
|
+
requestBody = getFormData(getFormDataObj(), param, bodyInfo.requestBody);
|
|
276
|
+
requiredParamMissing = concat(requiredParamMissing, bodyInfo.missingParams);
|
|
277
|
+
}
|
|
278
|
+
else if ((operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.consumes) && operationInfo.consumes[0] === WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED) {
|
|
279
|
+
// when the content-type is 'application/x-www-form-urlencoded'
|
|
280
|
+
requestBody = (requestBody && requestBody.length > 0 ? "".concat(requestBody, "&") : '')
|
|
281
|
+
+ "".concat(encodeURIComponent(param.name), "=").concat(encodeURIComponent(param.sampleValue));
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
requestBody = getFormData(getFormDataObj(), param, paramValue);
|
|
285
|
+
}
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
else if (param.required) {
|
|
290
|
+
requiredParamMissing.push(param.name || param.id);
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
// if required param not found, return error
|
|
294
|
+
if (requiredParamMissing.length) {
|
|
295
|
+
return {
|
|
296
|
+
'error': {
|
|
297
|
+
'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.REQUIRED_FIELD_MISSING,
|
|
298
|
+
'field': requiredParamMissing.join(','),
|
|
299
|
+
'message': replace(VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.REQUIRED_FIELD_MISSING, [requiredParamMissing.join(',')]),
|
|
300
|
+
'skipDefaultNotification': true
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
// Setting appropriate content-Type for request accepting request body like POST, PUT, etc
|
|
305
|
+
if (!includes(WS_CONSTANTS.NON_BODY_HTTP_METHODS, toUpper(method))) {
|
|
306
|
+
/*Based on the formData browser will automatically set the content type to 'multipart/form-data' and webkit boundary*/
|
|
307
|
+
if (!(operationInfo.consumes && (operationInfo.consumes[0] === WS_CONSTANTS.CONTENT_TYPES.MULTIPART_FORMDATA))) {
|
|
308
|
+
headers['Content-Type'] = (operationInfo.consumes && operationInfo.consumes[0]) || 'application/json';
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
// if the consumes has application/x-www-form-urlencoded and
|
|
312
|
+
// if the http request of given method type can have body send the queryParams as Form Data
|
|
313
|
+
if (includes(operationInfo.consumes, WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED)
|
|
314
|
+
&& !includes(WS_CONSTANTS.NON_BODY_HTTP_METHODS, (method || '').toUpperCase())) {
|
|
315
|
+
// remove the '?' at the start of the queryParams
|
|
316
|
+
if (queryParams) {
|
|
317
|
+
requestBody = (requestBody ? requestBody + '&' : '') + queryParams.substring(1);
|
|
318
|
+
}
|
|
319
|
+
headers['Content-Type'] = WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED;
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
url += queryParams;
|
|
323
|
+
}
|
|
324
|
+
/*
|
|
325
|
+
* for proxy calls:
|
|
326
|
+
* - cloak the proper headers (required only for REST services)
|
|
327
|
+
* - prepare complete url from relativeUrl
|
|
328
|
+
*/
|
|
329
|
+
if (isProxyCall) {
|
|
330
|
+
// avoiding cloakHeadersForProxy when the method is invoked from apidesigner.
|
|
331
|
+
headers = (variable.serviceType !== VARIABLE_CONSTANTS.SERVICE_TYPE.REST && variable.serviceType !== VARIABLE_CONSTANTS.SERVICE_TYPE.OPENAPI) || operationInfo.skipCloakHeaders ? headers : cloakHeadersForProxy(headers);
|
|
332
|
+
if (variable.getPrefabName() && VARIABLE_CONSTANTS.REST_SUPPORTED_SERVICES.indexOf(variable.serviceType) !== -1) {
|
|
333
|
+
/* if it is a prefab variable (used in a normal project), modify the url */
|
|
334
|
+
url = 'prefabs/' + variable.getPrefabName() + url;
|
|
335
|
+
target = 'invokePrefabRestService';
|
|
336
|
+
}
|
|
337
|
+
else if (!variable.getPrefabName()) {
|
|
338
|
+
url = 'services' + url;
|
|
339
|
+
}
|
|
340
|
+
url = $rootScope.project.deployedUrl + url;
|
|
341
|
+
}
|
|
342
|
+
// If pagination info exists, process info in request headers or body based on the metadata
|
|
343
|
+
var paginationInfo = PaginationUtils.getPaginationInfo(operationInfo, variable);
|
|
344
|
+
if (paginationInfo && variable.pagination) {
|
|
345
|
+
var resp = PaginationUtils.setPaginationAtReq(paginationInfo, operationInfo, variable, headers, requestBody, url, options);
|
|
346
|
+
if (resp) {
|
|
347
|
+
if (resp['headers']) {
|
|
348
|
+
headers = resp['headers'];
|
|
349
|
+
}
|
|
350
|
+
else if (resp['requestBody']) {
|
|
351
|
+
requestBody = resp['requestBody'];
|
|
352
|
+
}
|
|
353
|
+
else if (resp['url']) {
|
|
354
|
+
url = resp['url'];
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
/*creating the params needed to invoke the service. url is generated from the relative path for the operation*/
|
|
359
|
+
invokeParams = {
|
|
360
|
+
'projectID': $rootScope.project.id,
|
|
361
|
+
'url': url,
|
|
362
|
+
'target': target,
|
|
363
|
+
'method': method,
|
|
364
|
+
'headers': headers,
|
|
365
|
+
'data': requestBody,
|
|
366
|
+
'authDetails': authDetails,
|
|
367
|
+
'isDirectCall': !isProxyCall,
|
|
368
|
+
'isExtURL': variable.serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.REST,
|
|
369
|
+
'withCredentials': withCredentials
|
|
370
|
+
};
|
|
371
|
+
return invokeParams;
|
|
372
|
+
};
|
|
373
|
+
ServiceVariableUtils.isFileUploadRequest = function (variable) {
|
|
374
|
+
// temporary fix, have to find proper solution for deciding weather to upload file through variable
|
|
375
|
+
return variable.service === 'FileService' && variable.operation === 'uploadFile';
|
|
376
|
+
};
|
|
377
|
+
ServiceVariableUtils.isFileDeleteRequest = function (variable) {
|
|
378
|
+
return variable.service === 'FileService' && variable.operation === 'deleteFile';
|
|
379
|
+
};
|
|
380
|
+
/**
|
|
381
|
+
* This method returns array of query param names for variable other then page,size,sort
|
|
382
|
+
* @params {params} params of the variable
|
|
383
|
+
*/
|
|
384
|
+
ServiceVariableUtils.excludePaginationParams = function (params) {
|
|
385
|
+
return map(reject(params, function (param) {
|
|
386
|
+
return includes(VARIABLE_CONSTANTS.PAGINATION_PARAMS, param.name);
|
|
387
|
+
}), function (param) {
|
|
388
|
+
return param.name;
|
|
389
|
+
});
|
|
390
|
+
};
|
|
391
|
+
return ServiceVariableUtils;
|
|
392
|
+
}());
|
|
393
|
+
export { ServiceVariableUtils };
|
|
394
|
+
//# sourceMappingURL=service-variable.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-variable.utils.js","sourceRoot":"./","sources":["src/util/variable/service-variable.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { extractType, isDefined, isDateTimeType, getBlob, replace } from \"../../util/utils\";\n\nimport { $rootScope, CONSTANTS, SWAGGER_CONSTANTS, VARIABLE_CONSTANTS, WS_CONSTANTS } from '../../constants/variables.constants';\nimport { isFileUploadSupported } from './variables.utils';\nimport { getAccessToken } from './../oAuth.utils';\nimport { formatDate} from \"./variables.utils\";\nimport { PaginationUtils } from '../../util/variable/pagination.utils';\n\nimport {includes, toLower, get, isObject, isArray, forEach, isUndefined, join, isEmpty, isNull, concat, toUpper, map, reject} from 'lodash-es';\n\n\n/**\n * returns true if a Service variable is:\n * - for a query/procedure\n * - performs a PUT/POST operation, i.e, takes a Request Body as input\n * @param variable\n * @returns {any}\n */\nconst isBodyTypeQueryOrProcedure = (variable) => {\n return (includes(['QueryExecution', 'ProcedureExecution'], variable.controller)) && (includes(['put', 'post'], variable.operationType));\n};\n\n/**\n * returns true if the variable is a Query service variable\n * @param {string} controller\n * @param {string} serviceType\n * @returns {boolean}\n */\nconst isQueryServiceVar = (controller: string, serviceType: string) => {\n return controller === VARIABLE_CONSTANTS.CONTROLLER_TYPE.QUERY && serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.DATA;\n};\n\n/**\n * Append given value to the formdata\n * @param formData\n * @param param - Param from which value has to be taken\n * @param paramValue - Value which is to be appended to formdata\n */\nconst getFormData = (formData, param, paramValue) => {\n const paramType = toLower(extractType(get(param, 'items.type') || param.type)),\n paramContentType = CONSTANTS.isStudioMode ? param['x-WM-CONTENT_TYPE'] : param.contentType;\n if (isFileUploadSupported()) {\n if ((paramType !== 'file') && (paramContentType === 'string' || !paramContentType)) {\n if (isObject(paramValue)) {\n paramValue = JSON.stringify(paramValue);\n }\n formData.append(param.name, paramValue);\n } else {\n if (isArray(paramValue) && paramType === 'file') {\n forEach(paramValue, function (fileObject) {\n formData.append(param.name, (fileObject && fileObject.content) || getBlob(fileObject), fileObject.name);\n });\n } else {\n formData.append(param.name, getBlob(paramValue, paramContentType), paramValue && paramValue.name);\n }\n }\n return formData;\n }\n};\n\n/**\n * Check for missing required params and format the date/time param values\n * @param inputData\n * @param params\n * @returns {{requestBody: {}; missingParams: any[]}}\n */\nconst processRequestBody = (inputData, params, variable) => {\n const requestBody = {},\n missingParams = [];\n let paramValue;\n forEach(params, function (param) {\n paramValue = get(inputData, param.name);\n if (!isUndefined(paramValue) && paramValue !== '' && paramValue !== null && !param.readOnly) {\n // ToDo - variable seperation\n paramValue = isDateTimeType(param.type) ? formatDate(paramValue, param.type, variable.dateFormatter) : paramValue;\n // Construct ',' separated string if param is not array type but value is an array\n if (isArray(paramValue) && toLower(extractType(param.type)) === 'string') {\n paramValue = join(paramValue, ',');\n }\n requestBody[param.name] = paramValue;\n } else if (param.required) {\n missingParams.push(param.name || param.id);\n }\n });\n return {\n 'requestBody': requestBody,\n 'missingParams': missingParams\n };\n};\n\n/**\n * Done only for HTTP calls made via the proxy server\n * Goes though request headers, appends 'X-' to certain headers\n * these headers need not be processed at proxy server and should directly be passed to the server\n * e.g. Authorization, Cookie, etc.\n * @param headers\n * @returns {{}}\n */\nconst cloakHeadersForProxy = (headers) => {\n const _headers = {},\n UNCLOAKED_HEADERS = VARIABLE_CONSTANTS.REST_SERVICE.UNCLOAKED_HEADERS,\n CLOAK_PREFIX = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.CLOAK_HEADER_KEY;\n forEach(headers, function (val, key) {\n if (includes(UNCLOAKED_HEADERS, key.toUpperCase())) {\n _headers[key] = val;\n } else {\n _headers[CLOAK_PREFIX + key] = val;\n }\n });\n\n return _headers;\n};\n\nexport class ServiceVariableUtils {\n /**\n * prepares the HTTP request info for a Service Variable\n * @param variable\n * @param operationInfo\n * @param inputFields\n * @returns {any}\n */\n static constructRequestParams(variable, operationInfo, inputFields, options?) {\n variable = variable || {};\n\n // operationInfo is specifically null for un_authorized access\n if (operationInfo === null) {\n return {\n 'error' : {\n 'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.USER_UNAUTHORISED,\n 'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.USER_UNAUTHORISED,\n 'field': '_wmServiceOperationInfo'\n }\n };\n } else if (isEmpty(operationInfo)) {\n return {\n 'error' : {\n 'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.METADATA_MISSING,\n 'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.METADATA_MISSING,\n 'field': '_wmServiceOperationInfo'\n }\n };\n } else if (operationInfo && operationInfo.invalid) {\n return {\n 'error' : {\n 'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.CRUD_OPERATION_MISSING,\n 'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.CRUD_OPERATION_MISSING,\n 'field': '_wmServiceOperationInfo'\n }\n };\n }\n\n const directPath = operationInfo.directPath || '',\n relativePath = operationInfo.basePath ? operationInfo.basePath + operationInfo.relativePath : operationInfo.relativePath,\n isBodyTypeQueryProcedure = isBodyTypeQueryOrProcedure(variable);\n let queryParams = '',\n bodyInfo,\n headers = {},\n requestBody,\n url,\n requiredParamMissing = [],\n target,\n pathParamRex,\n invokeParams,\n authDetails = null,\n uname,\n pswd,\n method,\n formData,\n isProxyCall,\n paramValueInfo,\n params,\n securityDefnObj,\n accessToken,\n withCredentials;\n\n function getFormDataObj() {\n if (formData) {\n return formData;\n }\n formData = new FormData();\n return formData;\n }\n\n securityDefnObj = get(operationInfo.securityDefinitions, '0');\n\n if (securityDefnObj) {\n switch (securityDefnObj.type) {\n case VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.OAUTH2:\n accessToken = getAccessToken(securityDefnObj[VARIABLE_CONSTANTS.REST_SERVICE.OAUTH_PROVIDER_KEY], null);\n if (accessToken) {\n headers[VARIABLE_CONSTANTS.REST_SERVICE.AUTH_HDR_KEY] = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.AUTH_HDR_VAL.OAUTH + ' ' + accessToken;\n } else {\n return {\n 'error': {\n 'type' : VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.NO_ACCESSTOKEN,\n 'message' : VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.NO_ACCESSTOKEN\n },\n 'securityDefnObj': securityDefnObj\n };\n }\n break;\n case VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.BASIC:\n uname = inputFields['wm_auth_username'];\n pswd = inputFields['wm_auth_password'];\n if (uname && pswd) {\n // TODO[VIBHU]: bas64 encoding alternative.\n headers[VARIABLE_CONSTANTS.REST_SERVICE.AUTH_HDR_KEY] = VARIABLE_CONSTANTS.REST_SERVICE.PREFIX.AUTH_HDR_VAL.BASIC + ' ' + btoa(uname + ':' + pswd);\n authDetails = {\n 'type': VARIABLE_CONSTANTS.REST_SERVICE.AUTH_TYPE.BASIC\n };\n } else {\n return {\n 'error': {\n 'type' : VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.NO_CREDENTIALS,\n 'message': VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.NO_CREDENTIALS\n },\n 'securityDefnObj': securityDefnObj\n };\n }\n break;\n }\n }\n // set query params, if pagination info is present and the info should be present in query\n PaginationUtils.checkPaginationAtQuery(operationInfo, variable, options);\n\n operationInfo.proxySettings = operationInfo.proxySettings || {web: true, mobile: false};\n method = operationInfo.httpMethod || operationInfo.methodType;\n isProxyCall = (function () {\n // ToDo - variable seperation\n // if (CONSTANTS.hasCordova) {\n return operationInfo.proxySettings.mobile;\n // }\n return operationInfo.proxySettings.web;\n }());\n withCredentials = operationInfo.proxySettings.withCredentials;\n url = isProxyCall ? relativePath : directPath;\n\n /* loop through all the parameters */\n forEach(operationInfo.parameters, function (param) {\n // Set params based on current workspace\n function setParamsOfChildNode() {\n if (inputFields) {\n // specific case for body type query/procedure variable with query params\n if (inputFields[param.name] && isObject(inputFields[param.name])) {\n paramValueInfo = inputFields[param.name];\n } else {\n paramValueInfo = inputFields;\n }\n params = get(operationInfo, ['definitions', param.type]);\n } else {\n // For Api Designer\n paramValueInfo = paramValue || {};\n params = param.children;\n }\n }\n\n let paramValue = param.sampleValue;\n\n if ((isDefined(paramValue) && paramValue !== null && paramValue !== '') || (isBodyTypeQueryProcedure && param.type !== 'file')) {\n // Format dateTime params for dataService variables\n if (variable.serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.DATA && isDateTimeType(param.type)) {\n // ToDo - variable seperation\n paramValue = formatDate(paramValue, param.type, variable.dateFormatter);\n }\n // Construct ',' separated string if param is not array type but value is an array\n if (isArray(paramValue) && toLower(extractType(param.type)) === 'string' && variable.serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.DATA) {\n paramValue = join(paramValue, ',');\n }\n switch (param.parameterType.toUpperCase()) {\n case 'QUERY':\n // Ignore null valued query params for queryService variable\n if (isNull(paramValue) && isQueryServiceVar(variable.controller, variable.serviceType)) {\n break;\n }\n if (!queryParams) {\n queryParams = '?' + param.name + '=' + encodeURIComponent(paramValue);\n } else {\n queryParams += '&' + param.name + '=' + encodeURIComponent(paramValue);\n }\n break;\n case 'PATH':\n /* replacing the path param based on the regular expression in the relative path */\n pathParamRex = new RegExp('\\\\s*\\\\{\\\\s*' + param.name + '(:\\\\.\\\\+)?\\\\s*\\\\}\\\\s*');\n url = url.replace(pathParamRex, paramValue);\n break;\n case 'HEADER':\n headers[param.name] = paramValue;\n break;\n case 'BODY':\n // For post/put query methods wrap the input\n if (isBodyTypeQueryProcedure) {\n setParamsOfChildNode();\n bodyInfo = processRequestBody(paramValueInfo, params, variable);\n requestBody = bodyInfo.requestBody;\n requiredParamMissing = concat(requiredParamMissing, bodyInfo.missingParams);\n } else {\n requestBody = paramValue;\n }\n break;\n case 'FORMDATA':\n if (isBodyTypeQueryProcedure && param.name === SWAGGER_CONSTANTS.WM_DATA_JSON) {\n setParamsOfChildNode();\n // Process query/procedure formData non-file params params\n bodyInfo = processRequestBody(paramValueInfo, params, variable);\n requestBody = getFormData(getFormDataObj(), param, bodyInfo.requestBody);\n requiredParamMissing = concat(requiredParamMissing, bodyInfo.missingParams);\n } else if(operationInfo?.consumes && operationInfo.consumes[0] === WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED) {\n // when the content-type is 'application/x-www-form-urlencoded'\n requestBody = (requestBody && requestBody.length > 0 ? `${requestBody}&` : '') \n + `${encodeURIComponent(param.name)}=${encodeURIComponent(param.sampleValue)}`;\n } else {\n requestBody = getFormData(getFormDataObj(), param, paramValue);\n }\n break;\n }\n } else if (param.required) {\n requiredParamMissing.push(param.name || param.id);\n }\n });\n\n // if required param not found, return error\n if (requiredParamMissing.length) {\n return {\n 'error': {\n 'type': VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.REQUIRED_FIELD_MISSING,\n 'field': requiredParamMissing.join(','),\n 'message': replace(VARIABLE_CONSTANTS.REST_SERVICE.ERR_MSG.REQUIRED_FIELD_MISSING, [requiredParamMissing.join(',')]),\n 'skipDefaultNotification': true\n }\n };\n }\n\n // Setting appropriate content-Type for request accepting request body like POST, PUT, etc\n if (!includes(WS_CONSTANTS.NON_BODY_HTTP_METHODS, toUpper(method))) {\n /*Based on the formData browser will automatically set the content type to 'multipart/form-data' and webkit boundary*/\n if (!(operationInfo.consumes && (operationInfo.consumes[0] === WS_CONSTANTS.CONTENT_TYPES.MULTIPART_FORMDATA))) {\n headers['Content-Type'] = (operationInfo.consumes && operationInfo.consumes[0]) || 'application/json';\n }\n }\n\n // if the consumes has application/x-www-form-urlencoded and\n // if the http request of given method type can have body send the queryParams as Form Data\n if (includes(operationInfo.consumes, WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED)\n && !includes(WS_CONSTANTS.NON_BODY_HTTP_METHODS, (method || '').toUpperCase())) {\n // remove the '?' at the start of the queryParams\n if (queryParams) {\n requestBody = (requestBody ? requestBody + '&' : '') + queryParams.substring(1);\n }\n headers['Content-Type'] = WS_CONSTANTS.CONTENT_TYPES.FORM_URL_ENCODED;\n } else {\n url += queryParams;\n }\n\n /*\n * for proxy calls:\n * - cloak the proper headers (required only for REST services)\n * - prepare complete url from relativeUrl\n */\n if (isProxyCall) {\n // avoiding cloakHeadersForProxy when the method is invoked from apidesigner.\n headers = (variable.serviceType !== VARIABLE_CONSTANTS.SERVICE_TYPE.REST && variable.serviceType !== VARIABLE_CONSTANTS.SERVICE_TYPE.OPENAPI) || operationInfo.skipCloakHeaders ? headers : cloakHeadersForProxy(headers);\n if (variable.getPrefabName() && VARIABLE_CONSTANTS.REST_SUPPORTED_SERVICES.indexOf(variable.serviceType) !== -1) {\n /* if it is a prefab variable (used in a normal project), modify the url */\n url = 'prefabs/' + variable.getPrefabName() + url;\n target = 'invokePrefabRestService';\n } else if (!variable.getPrefabName()) {\n url = 'services' + url;\n }\n url = $rootScope.project.deployedUrl + url;\n }\n\n // If pagination info exists, process info in request headers or body based on the metadata\n const paginationInfo = PaginationUtils.getPaginationInfo(operationInfo, variable);\n if (paginationInfo && variable.pagination) {\n const resp = PaginationUtils.setPaginationAtReq(paginationInfo, operationInfo, variable, headers, requestBody, url, options);\n if (resp) {\n if (resp['headers']) {\n headers = resp['headers'];\n } else if (resp['requestBody']) {\n requestBody = resp['requestBody']\n } else if (resp['url']) {\n url = resp['url']\n }\n }\n }\n\n /*creating the params needed to invoke the service. url is generated from the relative path for the operation*/\n invokeParams = {\n 'projectID': $rootScope.project.id,\n 'url': url,\n 'target': target,\n 'method': method,\n 'headers': headers,\n 'data': requestBody,\n 'authDetails': authDetails,\n 'isDirectCall': !isProxyCall,\n 'isExtURL': variable.serviceType === VARIABLE_CONSTANTS.SERVICE_TYPE.REST,\n 'withCredentials': withCredentials\n };\n\n return invokeParams;\n }\n\n static isFileUploadRequest(variable) {\n // temporary fix, have to find proper solution for deciding weather to upload file through variable\n return variable.service === 'FileService' && variable.operation === 'uploadFile';\n }\n\n static isFileDeleteRequest(variable) {\n return variable.service === 'FileService' && variable.operation === 'deleteFile';\n }\n\n /**\n * This method returns array of query param names for variable other then page,size,sort\n * @params {params} params of the variable\n */\n static excludePaginationParams(params) {\n return map(reject(params, (param) => {\n return includes(VARIABLE_CONSTANTS.PAGINATION_PARAMS, param.name);\n }), function (param) {\n return param.name;\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
export declare let appManager: any;
|
|
2
|
+
export declare let httpService: any;
|
|
3
|
+
export declare let metadataService: any;
|
|
4
|
+
export declare let navigationService: any;
|
|
5
|
+
export declare let routerService: any;
|
|
6
|
+
export declare let toasterService: any;
|
|
7
|
+
export declare let oauthService: any;
|
|
8
|
+
export declare let securityService: any;
|
|
9
|
+
export declare let dialogService: any;
|
|
10
|
+
export declare let internalBoundNodeMap: Map<any, any>;
|
|
11
|
+
export declare const wmSetDependency: (type: string, ref: any) => void;
|
|
12
|
+
export declare const debounceVariableCall: (variable: any, op: any) => void;
|
|
13
|
+
/**
|
|
14
|
+
* returns true if HTML5 File API is available else false
|
|
15
|
+
* @returns {{prototype: Blob; new(blobParts?: any[], options?: BlobPropertyBag): Blob}}
|
|
16
|
+
*/
|
|
17
|
+
export declare const isFileUploadSupported: () => any;
|
|
18
|
+
/**
|
|
19
|
+
* formatting the expression as required by backend which was enclosed by ${<expression>}.
|
|
20
|
+
* @param fieldDefs
|
|
21
|
+
* returns fieldDefs
|
|
22
|
+
*/
|
|
23
|
+
export declare const formatExportExpression: (fieldDefs: any) => any;
|
|
24
|
+
/**
|
|
25
|
+
* prepare a blob object based on the content and content type provided
|
|
26
|
+
* if content is blob itself, simply returns it back
|
|
27
|
+
* @param val
|
|
28
|
+
* @param valContentType
|
|
29
|
+
* @returns {*}
|
|
30
|
+
*/
|
|
31
|
+
export declare const getBlob: (val: any, valContentType?: any) => any;
|
|
32
|
+
/**
|
|
33
|
+
* sets the value against passed key on the "inputFields" object in the variable
|
|
34
|
+
* @param targetObj: the object in which the key, value is to be set
|
|
35
|
+
* @param variable
|
|
36
|
+
* @param key: can be:
|
|
37
|
+
* - a string e.g. "username"
|
|
38
|
+
* - an object, e.g. {"username": "john", "ssn": "11111"}
|
|
39
|
+
* @param val
|
|
40
|
+
* - if key is string, the value against it (for that data type)
|
|
41
|
+
* - if key is object, not required
|
|
42
|
+
* @param options
|
|
43
|
+
* @returns {any}
|
|
44
|
+
*/
|
|
45
|
+
export declare const setInput: (targetObj: any, key: any, val: any, options: any) => any;
|
|
46
|
+
/**
|
|
47
|
+
* This method decodes the variable data which is encoded from backend before showing in the widgets.
|
|
48
|
+
* It takes variable response content as input and iterates recursively,
|
|
49
|
+
* if the value is string type then it will decode the data.
|
|
50
|
+
* @param responseContent (Array of objects)
|
|
51
|
+
*/
|
|
52
|
+
export declare const decodeData: (responseContent: any) => any;
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* @param varOrder
|
|
56
|
+
* @param optionsOrder
|
|
57
|
+
* @returns {any}
|
|
58
|
+
*/
|
|
59
|
+
export declare const getEvaluatedOrderBy: (varOrder: any, optionsOrder: any) => any;
|
|
60
|
+
/**
|
|
61
|
+
* Returns the object node for a bind object, where the value has to be updated
|
|
62
|
+
* obj.target = "a"
|
|
63
|
+
* @param obj
|
|
64
|
+
* @param root
|
|
65
|
+
* @param variable
|
|
66
|
+
* @returns {*}
|
|
67
|
+
*/
|
|
68
|
+
export declare const getTargetObj: (obj: any, root: any, variable: any) => any;
|
|
69
|
+
/**
|
|
70
|
+
* Gets the key for the target object
|
|
71
|
+
* the computed value will be updated against this key in the targetObject(computed by getTargetObj())
|
|
72
|
+
* @param target
|
|
73
|
+
* @param regex
|
|
74
|
+
* @returns {*}
|
|
75
|
+
*/
|
|
76
|
+
export declare const getTargetNodeKey: (target: any) => any;
|
|
77
|
+
export declare const setValueToNode: (target: any, obj: any, root: any, variable: any, value: any, noUpdate?: any) => void;
|
|
78
|
+
export declare const getTarget: (variable: any) => any;
|
|
79
|
+
/**
|
|
80
|
+
* The model internalBoundNodeMap stores the reference to latest computed values against internal(nested) bound nodes
|
|
81
|
+
* This is done so that the internal node's computed value is not lost, once its parent node's value is computed at a later point
|
|
82
|
+
* E.g.
|
|
83
|
+
* Variable.employeeVar has following bindings
|
|
84
|
+
* "dataBinding": [
|
|
85
|
+
{
|
|
86
|
+
"target": "department.budget",
|
|
87
|
+
"value": "bind:Variables.budgetVar.dataSet"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"target": "department",
|
|
91
|
+
"value": "bind:Variables.departmentVar.dataSet"
|
|
92
|
+
}
|
|
93
|
+
]
|
|
94
|
+
* When department.budget is computed, employeeVar.dataSet = {
|
|
95
|
+
* "department": {
|
|
96
|
+
* "budget": {"q1": 1111}
|
|
97
|
+
* }
|
|
98
|
+
* }
|
|
99
|
+
*
|
|
100
|
+
* When department is computed
|
|
101
|
+
* "department": {
|
|
102
|
+
* "name": "HR",
|
|
103
|
+
* "location": "Hyderabad"
|
|
104
|
+
* }
|
|
105
|
+
* The budget field (computed earlier) is LOST.
|
|
106
|
+
*
|
|
107
|
+
* To avoid this, the latest values against internal nodes (in this case department.budget) are stored in a map
|
|
108
|
+
* These values are assigned back to internal fields if the parent is computed (in this case department)
|
|
109
|
+
* @param target
|
|
110
|
+
* @param root
|
|
111
|
+
* @param variable
|
|
112
|
+
*/
|
|
113
|
+
export declare const updateInternalNodes: (target: any, root: any, variable: any) => void;
|
|
114
|
+
export declare const initiateCallback: (type: string, variable: any, data: any, options?: any, skipDefaultNotification?: boolean) => any;
|
|
115
|
+
export declare const formatDate: (value: any, type: any, dateFormatter: any) => any;
|
|
116
|
+
/**
|
|
117
|
+
* This method filters and returns error message from the failed network call response.
|
|
118
|
+
* @param err, error form network call failure
|
|
119
|
+
*/
|
|
120
|
+
export declare const getErrMessage: (err: any, localeObject: any) => any;
|