@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.
Files changed (123) hide show
  1. package/index.d.ts +14 -0
  2. package/index.js +15 -0
  3. package/index.js.map +1 -0
  4. package/npm-shrinkwrap.json +1967 -0
  5. package/package-lock.json +1967 -0
  6. package/package.json +48 -0
  7. package/scripts/build.d.ts +1 -0
  8. package/scripts/build.js +183 -0
  9. package/scripts/build.js.map +1 -0
  10. package/src/advanced-options.d.ts +4 -0
  11. package/src/advanced-options.js +2 -0
  12. package/src/advanced-options.js.map +1 -0
  13. package/src/constants/variables.constants.d.ts +307 -0
  14. package/src/constants/variables.constants.js +334 -0
  15. package/src/constants/variables.constants.js.map +1 -0
  16. package/src/factory/variable-manager.factory.d.ts +3 -0
  17. package/src/factory/variable-manager.factory.js +26 -0
  18. package/src/factory/variable-manager.factory.js.map +1 -0
  19. package/src/manager/action/timer-action.manager.d.ts +4 -0
  20. package/src/manager/action/timer-action.manager.js +38 -0
  21. package/src/manager/action/timer-action.manager.js.map +1 -0
  22. package/src/manager/variable/base-variable.manager.d.ts +24 -0
  23. package/src/manager/variable/base-variable.manager.js +79 -0
  24. package/src/manager/variable/base-variable.manager.js.map +1 -0
  25. package/src/manager/variable/crud-variable.manager.d.ts +85 -0
  26. package/src/manager/variable/crud-variable.manager.js +415 -0
  27. package/src/manager/variable/crud-variable.manager.js.map +1 -0
  28. package/src/manager/variable/live-variable.manager.d.ts +154 -0
  29. package/src/manager/variable/live-variable.manager.js +1078 -0
  30. package/src/manager/variable/live-variable.manager.js.map +1 -0
  31. package/src/manager/variable/model-variable.manager.d.ts +4 -0
  32. package/src/manager/variable/model-variable.manager.js +56 -0
  33. package/src/manager/variable/model-variable.manager.js.map +1 -0
  34. package/src/manager/variable/service-variable.manager.d.ts +113 -0
  35. package/src/manager/variable/service-variable.manager.js +713 -0
  36. package/src/manager/variable/service-variable.manager.js.map +1 -0
  37. package/src/model/action/timer-action.d.ts +12 -0
  38. package/src/model/action/timer-action.js +60 -0
  39. package/src/model/action/timer-action.js.map +1 -0
  40. package/src/model/base-action.d.ts +32 -0
  41. package/src/model/base-action.js +89 -0
  42. package/src/model/base-action.js.map +1 -0
  43. package/src/model/base-variable.d.ts +58 -0
  44. package/src/model/base-variable.js +180 -0
  45. package/src/model/base-variable.js.map +1 -0
  46. package/src/model/crud-create.d.ts +8 -0
  47. package/src/model/crud-create.js +17 -0
  48. package/src/model/crud-create.js.map +1 -0
  49. package/src/model/crud-delete.d.ts +8 -0
  50. package/src/model/crud-delete.js +17 -0
  51. package/src/model/crud-delete.js.map +1 -0
  52. package/src/model/crud-list.d.ts +8 -0
  53. package/src/model/crud-list.js +17 -0
  54. package/src/model/crud-list.js.map +1 -0
  55. package/src/model/crud-update.d.ts +8 -0
  56. package/src/model/crud-update.js +17 -0
  57. package/src/model/crud-update.js.map +1 -0
  58. package/src/model/variable/api-aware-variable.d.ts +23 -0
  59. package/src/model/variable/api-aware-variable.js +25 -0
  60. package/src/model/variable/api-aware-variable.js.map +1 -0
  61. package/src/model/variable/crud-variable.d.ts +30 -0
  62. package/src/model/variable/crud-variable.js +181 -0
  63. package/src/model/variable/crud-variable.js.map +1 -0
  64. package/src/model/variable/live-variable.d.ts +40 -0
  65. package/src/model/variable/live-variable.js +262 -0
  66. package/src/model/variable/live-variable.js.map +1 -0
  67. package/src/model/variable/model-variable.d.ts +11 -0
  68. package/src/model/variable/model-variable.js +83 -0
  69. package/src/model/variable/model-variable.js.map +1 -0
  70. package/src/model/variable/service-variable.d.ts +35 -0
  71. package/src/model/variable/service-variable.js +147 -0
  72. package/src/model/variable/service-variable.js.map +1 -0
  73. package/src/types/date-formatter.d.ts +3 -0
  74. package/src/types/date-formatter.js +2 -0
  75. package/src/types/date-formatter.js.map +1 -0
  76. package/src/types/event-notifier.d.ts +9 -0
  77. package/src/types/event-notifier.js +25 -0
  78. package/src/types/event-notifier.js.map +1 -0
  79. package/src/types/http-client.service.d.ts +8 -0
  80. package/src/types/http-client.service.js +2 -0
  81. package/src/types/http-client.service.js.map +1 -0
  82. package/src/types/types.d.ts +50 -0
  83. package/src/types/types.js +54 -0
  84. package/src/types/types.js.map +1 -0
  85. package/src/util/dataset-util.d.ts +27 -0
  86. package/src/util/dataset-util.js +147 -0
  87. package/src/util/dataset-util.js.map +1 -0
  88. package/src/util/file-upload.util.d.ts +11 -0
  89. package/src/util/file-upload.util.js +183 -0
  90. package/src/util/file-upload.util.js.map +1 -0
  91. package/src/util/inflight-queue.d.ts +35 -0
  92. package/src/util/inflight-queue.js +102 -0
  93. package/src/util/inflight-queue.js.map +1 -0
  94. package/src/util/notify-promise.d.ts +3 -0
  95. package/src/util/notify-promise.js +37 -0
  96. package/src/util/notify-promise.js.map +1 -0
  97. package/src/util/oAuth.utils.d.ts +3 -0
  98. package/src/util/oAuth.utils.js +11 -0
  99. package/src/util/oAuth.utils.js.map +1 -0
  100. package/src/util/utils.d.ts +69 -0
  101. package/src/util/utils.js +364 -0
  102. package/src/util/utils.js.map +1 -0
  103. package/src/util/variable/live-variable.http.utils.d.ts +21 -0
  104. package/src/util/variable/live-variable.http.utils.js +212 -0
  105. package/src/util/variable/live-variable.http.utils.js.map +1 -0
  106. package/src/util/variable/live-variable.utils.d.ts +72 -0
  107. package/src/util/variable/live-variable.utils.js +667 -0
  108. package/src/util/variable/live-variable.utils.js.map +1 -0
  109. package/src/util/variable/pagination.utils.d.ts +91 -0
  110. package/src/util/variable/pagination.utils.js +493 -0
  111. package/src/util/variable/pagination.utils.js.map +1 -0
  112. package/src/util/variable/service-variable.utils.d.ts +17 -0
  113. package/src/util/variable/service-variable.utils.js +394 -0
  114. package/src/util/variable/service-variable.utils.js.map +1 -0
  115. package/src/util/variable/variables.utils.d.ts +120 -0
  116. package/src/util/variable/variables.utils.js +544 -0
  117. package/src/util/variable/variables.utils.js.map +1 -0
  118. package/src/wm-namespace.d.ts +11 -0
  119. package/src/wm-namespace.js +13 -0
  120. package/src/wm-namespace.js.map +1 -0
  121. package/webpack.config.d.ts +21 -0
  122. package/webpack.config.js +28 -0
  123. package/webpack.config.js.map +1 -0
@@ -0,0 +1,85 @@
1
+ import { CrudVariable } from '../../model/variable/crud-variable';
2
+ import { ServiceVariableManager } from './service-variable.manager';
3
+ export declare class CrudVariableManager extends ServiceVariableManager {
4
+ fileUploadResponse: any;
5
+ fileUploadCount: number;
6
+ totalFilesCount: number;
7
+ successFileUploadCount: number;
8
+ failedFileUploadCount: number;
9
+ private getPaginationInfo;
10
+ private getOperationInfo;
11
+ /**
12
+ * gets the service operation info against a service variable
13
+ * this is extracted from the metadataservice
14
+ * @param variable
15
+ * @param inputFields: sample values, if provided, will be set against params in the definition
16
+ * @param options
17
+ * @returns {any}
18
+ */
19
+ private getMethodInfoForCrud;
20
+ /**
21
+ * proxy for the invoke call
22
+ * Request Info is constructed
23
+ * if error found, error is thrown
24
+ * else, call is made
25
+ * @param {CrudVariable} variable
26
+ * @param options
27
+ * @param {Function} success
28
+ * @param {Function} error
29
+ * @returns {any}
30
+ * @private
31
+ */
32
+ protected _invoke(variable: CrudVariable, options: any, success: Function, error: Function): any;
33
+ invoke(variable: any, options: any, success: any, error: any): Promise<unknown>;
34
+ getInputParms(variable: any): any;
35
+ setInput(variable: any, key: any, val: any, options: any, type?: any): any;
36
+ /**
37
+ * Initializes the bindings for the CRUD variable
38
+ * flatten the bindings (categorised by operation name) to a list of bindings
39
+ * each binding object's target is changed appended with the operation type
40
+ * E.g. Input binding will be like:
41
+ {
42
+ "list": [
43
+ {
44
+ "target": "q",
45
+ "type": "string",
46
+ "value": "X"
47
+ }
48
+ ],
49
+ "update": [
50
+ {
51
+ "target": "id",
52
+ "value": "bind:Widgets.UserControllerTable2.selecteditem.userId",
53
+ "type": "integer"
54
+ }
55
+ ]
56
+ }
57
+
58
+ * This function will convert it to
59
+ [
60
+ {
61
+ "target": "list.q",
62
+ "type": "string",
63
+ "value": "X"
64
+ },
65
+ {
66
+ "target": "update.id",
67
+ "value": "bind:Widgets.UserControllerTable2.selecteditem.userId",
68
+ "type": "integer"
69
+ }
70
+ ]
71
+
72
+ * The bindings will be evaluated through the base-manager initBinding method and will
73
+ * be stored in variable.dataBinding as follows:
74
+ {
75
+ list: {
76
+ q: "X"
77
+ },
78
+ update: {
79
+ id: "evaluated value"
80
+ }
81
+ }
82
+ * @param variable
83
+ */
84
+ initBinding(variable: any): void;
85
+ }
@@ -0,0 +1,415 @@
1
+ var __extends = (this && this.__extends) || (function () {
2
+ var extendStatics = function (d, b) {
3
+ extendStatics = Object.setPrototypeOf ||
4
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
5
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
6
+ return extendStatics(d, b);
7
+ };
8
+ return function (d, b) {
9
+ if (typeof b !== "function" && b !== null)
10
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
11
+ extendStatics(d, b);
12
+ function __() { this.constructor = d; }
13
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14
+ };
15
+ })();
16
+ // import { $invokeWatchers, getClonedObject, getValidJSON, isDefined, isPageable, isValidWebURL, noop, triggerFn, xmlToJson } from '@wm/core';
17
+ import { getClonedObject, triggerFn } from "../../util/utils";
18
+ import { ServiceVariableUtils } from '../../util/variable/service-variable.utils';
19
+ import { $queue } from '../../util/inflight-queue';
20
+ import { VARIABLE_CONSTANTS, WS_CONSTANTS } from '../../constants/variables.constants';
21
+ import { appManager, setInput } from './../../util/variable/variables.utils';
22
+ import { getEvaluatedOrderBy, initiateCallback, metadataService, getErrMessage } from '../../util/variable/variables.utils';
23
+ import { getAccessToken } from '../../util/oAuth.utils';
24
+ import { ServiceVariableManager } from './service-variable.manager';
25
+ import { get, isObject, forEach, merge, omit, isArray, includes, extend, isEmpty } from 'lodash-es';
26
+ var CrudVariableManager = /** @class */ (function (_super) {
27
+ __extends(CrudVariableManager, _super);
28
+ function CrudVariableManager() {
29
+ var _this = _super !== null && _super.apply(this, arguments) || this;
30
+ _this.fileUploadResponse = [];
31
+ _this.fileUploadCount = 0;
32
+ _this.totalFilesCount = 0;
33
+ _this.successFileUploadCount = 0;
34
+ _this.failedFileUploadCount = 0;
35
+ return _this;
36
+ }
37
+ CrudVariableManager.prototype.getPaginationInfo = function (variable, inputFields, options) {
38
+ if (!options || !options.operation) {
39
+ options.operation = 'list';
40
+ }
41
+ var serviceDef = getClonedObject(metadataService.getByCrudId(variable.crudOperationId, variable.getPrefabName()));
42
+ var methodInfo = serviceDef === null ? null : get(serviceDef, 'wmServiceOperationInfo');
43
+ methodInfo = serviceDef.filter(function (item) {
44
+ return options.operation === item.operationType;
45
+ })[0];
46
+ if (!methodInfo) {
47
+ return methodInfo;
48
+ }
49
+ // methodInfo.paginationInfo = {
50
+ // "contentMapping": "content",
51
+ // "ascSortExpression": "{{fieldName}} a",
52
+ // "descSortExpression": "{{fieldName}} d",
53
+ // //"defaultSortExpression": "id",
54
+ // "totalMapping": "totalElements",
55
+ // "pageMapping": {
56
+ // "in": "query",
57
+ // "name": "pageNum",
58
+ // "description": "the existing id",
59
+ // "type": "integer",
60
+ // "required": true
61
+ // },
62
+ // "sizeMapping": {
63
+ // "in": "query",
64
+ // "name": "limit",
65
+ // "description": "the existing id",
66
+ // "type": "integer",
67
+ // "required": true
68
+ // },
69
+ // "sortMapping": {
70
+ // "name": "sortInfo",
71
+ // "in": "query",
72
+ // "description": "the sorting criteria",
73
+ // "required": true,
74
+ // "type": "integer"
75
+ // }
76
+ // };
77
+ methodInfo.paginationInfo = null;
78
+ return methodInfo.paginationInfo;
79
+ };
80
+ CrudVariableManager.prototype.getOperationInfo = function (variable, options) {
81
+ var serviceDef = getClonedObject(metadataService.getByCrudId(variable.crudOperationId, variable.getPrefabName()));
82
+ var methodInfo;
83
+ // fallback if there is no operation
84
+ if (options && !options.operation) {
85
+ options.operation = 'list';
86
+ }
87
+ if (!serviceDef.length) {
88
+ return;
89
+ }
90
+ methodInfo = serviceDef.filter(function (item) {
91
+ return options.operation === item.operationType;
92
+ })[0];
93
+ return methodInfo ? methodInfo.wmServiceOperationInfo : { invalid: true };
94
+ };
95
+ /**
96
+ * gets the service operation info against a service variable
97
+ * this is extracted from the metadataservice
98
+ * @param variable
99
+ * @param inputFields: sample values, if provided, will be set against params in the definition
100
+ * @param options
101
+ * @returns {any}
102
+ */
103
+ CrudVariableManager.prototype.getMethodInfoForCrud = function (variable, inputFields, options) {
104
+ var methodInfo = this.getOperationInfo(variable, options);
105
+ if (!methodInfo || methodInfo.invalid) {
106
+ return methodInfo;
107
+ }
108
+ var securityDefnObj = get(methodInfo.securityDefinitions, '0'), isOAuthTypeService = securityDefnObj && (securityDefnObj.type === VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.OAUTH2);
109
+ if (methodInfo.parameters) {
110
+ methodInfo.parameters.forEach(function (param) {
111
+ // Ignore readOnly params in case of formData file params will be duplicated
112
+ if (param.readOnly) {
113
+ return;
114
+ }
115
+ param.sampleValue = inputFields[param.name];
116
+ /* supporting pagination for query service variable */
117
+ if (VARIABLE_CONSTANTS.PAGINATION_PARAMS.indexOf(param.name) !== -1) {
118
+ if (param.name === 'size') {
119
+ param.sampleValue = options.size || param.sampleValue || parseInt(variable.maxResults, 10);
120
+ }
121
+ else if (param.name === 'page') {
122
+ param.sampleValue = options.page || param.sampleValue || 1;
123
+ }
124
+ else if (param.name === 'sort') {
125
+ param.sampleValue = getEvaluatedOrderBy(variable.orderBy, options.orderBy) || param.sampleValue || '';
126
+ }
127
+ }
128
+ else if (param.name === 'access_token' && isOAuthTypeService) {
129
+ param.sampleValue = getAccessToken(securityDefnObj[VARIABLE_CONSTANTS.REST_SERVICE.OAUTH_PROVIDER_KEY], null);
130
+ }
131
+ });
132
+ }
133
+ return methodInfo;
134
+ };
135
+ /**
136
+ * proxy for the invoke call
137
+ * Request Info is constructed
138
+ * if error found, error is thrown
139
+ * else, call is made
140
+ * @param {CrudVariable} variable
141
+ * @param options
142
+ * @param {Function} success
143
+ * @param {Function} error
144
+ * @returns {any}
145
+ * @private
146
+ */
147
+ CrudVariableManager.prototype._invoke = function (variable, options, success, error) {
148
+ var _this = this;
149
+ var inputFields = getClonedObject(options.inputFields || {});
150
+ if (options.operation === 'delete') {
151
+ inputFields = getClonedObject(options.row || inputFields.row || options.inputFields || variable.dataBinding);
152
+ }
153
+ else if (options.operation === 'create' && options.row) {
154
+ inputFields = getClonedObject(options.row);
155
+ }
156
+ else if (options.operation === 'update' && options.row) {
157
+ inputFields = getClonedObject(options.row);
158
+ }
159
+ // EVENT: ON_BEFORE_UPDATE
160
+ var output = initiateCallback(VARIABLE_CONSTANTS.EVENT.BEFORE_UPDATE, variable, inputFields, options);
161
+ var successHandler;
162
+ var errorHandler;
163
+ if (output === false) {
164
+ $queue.process(variable);
165
+ triggerFn(error);
166
+ return;
167
+ }
168
+ if (isObject(output)) {
169
+ inputFields = output;
170
+ }
171
+ var opInfo = this.getOperationInfo(variable, options);
172
+ var bodyParam;
173
+ if (opInfo && opInfo.parameters) {
174
+ bodyParam = opInfo.parameters.filter(function (op) {
175
+ return op.parameterType === 'body' || op.parameterType === 'formData';
176
+ })[0];
177
+ }
178
+ // merge fields with bindings
179
+ var bindingFields = get(variable.dataBinding, options.operation) || {};
180
+ // bindings from setInput can come along with the body param, so employee.age will have to be converted to age
181
+ if (bodyParam && bindingFields[bodyParam.name]) {
182
+ forEach(bindingFields, function (bindingFieldVal, bindingFieldKey) {
183
+ if (bindingFieldKey === bodyParam.name) {
184
+ merge(inputFields, bindingFieldVal);
185
+ }
186
+ else {
187
+ inputFields[bindingFieldKey] = bindingFieldVal;
188
+ }
189
+ });
190
+ }
191
+ else {
192
+ merge(inputFields, bindingFields);
193
+ }
194
+ if ((options.operation === 'create' || options.operation === 'update') && (!bodyParam || !inputFields[bodyParam.name])) {
195
+ var bodyTypeKeys = [], nonBodyParam = void 0;
196
+ var _loop_1 = function (fieldName) {
197
+ nonBodyParam = opInfo.parameters.filter(function (param) {
198
+ return param.name === fieldName && param.parameterType !== 'body' && param.parameterType !== 'formData';
199
+ });
200
+ if (nonBodyParam.length) {
201
+ bodyTypeKeys.push(fieldName);
202
+ }
203
+ };
204
+ // only merge body/formData type params to the requestBody.
205
+ for (var fieldName in inputFields) {
206
+ _loop_1(fieldName);
207
+ }
208
+ var reqBodyFields = omit(inputFields, bodyTypeKeys);
209
+ if (bodyParam) {
210
+ inputFields[bodyParam.name] = getClonedObject(reqBodyFields);
211
+ }
212
+ else {
213
+ inputFields.RequestBody = getClonedObject(reqBodyFields);
214
+ }
215
+ }
216
+ var paginationInfo;
217
+ var operationInfo = this.getMethodInfoForCrud(variable, inputFields, options);
218
+ var pathParam, bodyTypeParam;
219
+ if (!variable.paginationTransformationRequired && operationInfo && !operationInfo.invalid) {
220
+ if (operationInfo.parameters) {
221
+ operationInfo.parameters.forEach(function (parameter) {
222
+ if (parameter.parameterType === 'path') {
223
+ pathParam = parameter.name;
224
+ }
225
+ else if (parameter.parameterType === 'body') {
226
+ bodyTypeParam = parameter.name;
227
+ inputFields[bodyTypeParam] = getClonedObject(inputFields);
228
+ }
229
+ });
230
+ }
231
+ for (var key in inputFields) {
232
+ if (key !== bodyTypeParam) {
233
+ delete inputFields[key];
234
+ }
235
+ }
236
+ if (pathParam && inputFields[bodyTypeParam]) {
237
+ inputFields[pathParam] = getClonedObject(inputFields[bodyTypeParam][pathParam]);
238
+ }
239
+ }
240
+ // else {
241
+ // inputFields.totalMapping = paginationInfo && paginationInfo.totalMapping;
242
+ // }
243
+ var requestParams = ServiceVariableUtils.constructRequestParams(variable, operationInfo, inputFields);
244
+ inputFields.sortInfo = options.orderBy;
245
+ // check errors
246
+ if (requestParams.error) {
247
+ if (requestParams.error.type === VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.CRUD_OPERATION_MISSING) {
248
+ requestParams.error.message = requestParams.error.message.replace('$operation', options.operation);
249
+ }
250
+ if (options.preventMissingOpMsg) {
251
+ $queue.process(variable);
252
+ return Promise.resolve('');
253
+ }
254
+ var info = this.handleRequestMetaError(requestParams, variable, success, error, options);
255
+ var reason = (get(info, 'error.message') || 'An error occurred while triggering the variable');
256
+ triggerFn(error);
257
+ return Promise.reject(reason);
258
+ }
259
+ // file upload
260
+ if (ServiceVariableUtils.isFileUploadRequest(variable)) {
261
+ var uploadPromise = this.uploadFile(variable, options, success, error, inputFields, requestParams);
262
+ if (uploadPromise) {
263
+ return uploadPromise;
264
+ }
265
+ }
266
+ // file download
267
+ if (operationInfo && isArray(operationInfo.produces) && includes(operationInfo.produces, WS_CONSTANTS.CONTENT_TYPES.OCTET_STREAM)) {
268
+ // ToDo - variable seperation
269
+ return variable.simulateFileDownload(requestParams, variable.dataBinding.file || variable.name, variable.dataBinding.exportType, function () {
270
+ initiateCallback(VARIABLE_CONSTANTS.EVENT.SUCCESS, variable, null, null, null);
271
+ $queue.process(variable);
272
+ triggerFn(success);
273
+ }, function () {
274
+ initiateCallback(VARIABLE_CONSTANTS.EVENT.ERROR, variable, null, null, null);
275
+ $queue.process(variable);
276
+ triggerFn(error);
277
+ }, variable.dataBinding);
278
+ }
279
+ // notify variable progress
280
+ this.notifyInflight(variable, !options.skipToggleState);
281
+ successHandler = function (response, resolve, inputObj) {
282
+ if (response && response.type) {
283
+ if (variable.paginationTransformationRequired) {
284
+ var json = JSON.parse(response.body);
285
+ var pageable = {
286
+ 'content': json[paginationInfo.contentMapping],
287
+ 'first': inputObj[paginationInfo.pageMapping.name] === 1 ? true : false,
288
+ 'last': inputObj[paginationInfo.pageMapping.name] === json[inputFields.totalMapping] ? true : false,
289
+ 'number': inputObj[paginationInfo.pageMapping.name] - 1,
290
+ 'numberOfElements': inputObj[paginationInfo.sizeMapping.name],
291
+ 'size': inputObj[paginationInfo.sizeMapping.name],
292
+ 'sort': null,
293
+ 'totalElements': json[inputFields.totalMapping],
294
+ 'totalPages': Math.ceil(json[inputFields.totalMapping] / inputObj[paginationInfo.sizeMapping.name])
295
+ };
296
+ if (inputObj.sortInfo) {
297
+ pageable.sort = [{ direction: inputObj.sortInfo.split(' ')[1].toUpperCase(), property: inputObj.sortInfo.split(' ')[0], ignoreCase: false, nullHandling: "NATIVE", ascending: inputObj.sortInfo.split(' ')[1] === 'asc' ? true : false }];
298
+ }
299
+ json = getClonedObject(pageable);
300
+ response.body = JSON.stringify(json);
301
+ }
302
+ var data = _this.processSuccessResponse(response.body, variable, extend(options, { 'xhrObj': response }), success, response.headers, operationInfo);
303
+ // notify variable success
304
+ _this.notifyInflight(variable, false, data);
305
+ resolve(response);
306
+ }
307
+ };
308
+ errorHandler = function (err, reject) {
309
+ var errMsg = getErrMessage(err, variable.httpService.getLocale());
310
+ // notify variable error
311
+ _this.notifyInflight(variable, false);
312
+ _this.processErrorResponse(variable, errMsg, error, err, options.skipNotification);
313
+ reject({
314
+ error: errMsg,
315
+ details: err
316
+ });
317
+ };
318
+ // make the call and return a promise to the user to support script calls made by users
319
+ return new Promise(function (resolve, reject) {
320
+ requestParams.responseType = 'text'; // this is to return text response. JSON & XML-to-JSON parsing is handled in success handler.
321
+ _this.httpCall(requestParams, variable).then(function (response) {
322
+ successHandler(response, resolve, inputFields);
323
+ }, function (err) {
324
+ errorHandler(err, reject);
325
+ });
326
+ // the _observable property on variable is used store the observable using which the network call is made
327
+ // this can be used to cancel the variable calls.
328
+ });
329
+ };
330
+ // *********************************************************** PUBLIC ***********************************************************//
331
+ CrudVariableManager.prototype.invoke = function (variable, options, success, error) {
332
+ options = options || {};
333
+ appManager.notify('check-state-persistence-options', {
334
+ options: options,
335
+ variable: variable
336
+ });
337
+ options.operation = options.operation || 'list';
338
+ options.inputFields = options.inputFields || getClonedObject(variable.dataBinding[options.operation]);
339
+ return $queue.submit(variable).then(this._invoke.bind(this, variable, options, success, error), error);
340
+ };
341
+ CrudVariableManager.prototype.getInputParms = function (variable) {
342
+ var wmServiceOperationInfo = get(metadataService.getByOperationId(variable.operationId, variable.getPrefabName()), 'wmServiceOperationInfo');
343
+ return get(wmServiceOperationInfo, 'parameters');
344
+ };
345
+ CrudVariableManager.prototype.setInput = function (variable, key, val, options, type) {
346
+ type = type || 'list';
347
+ if (isEmpty(variable.dataBinding[type])) {
348
+ variable.dataBinding[type] = {};
349
+ }
350
+ return setInput(variable.dataBinding[type], key, val, options);
351
+ };
352
+ /**
353
+ * Initializes the bindings for the CRUD variable
354
+ * flatten the bindings (categorised by operation name) to a list of bindings
355
+ * each binding object's target is changed appended with the operation type
356
+ * E.g. Input binding will be like:
357
+ {
358
+ "list": [
359
+ {
360
+ "target": "q",
361
+ "type": "string",
362
+ "value": "X"
363
+ }
364
+ ],
365
+ "update": [
366
+ {
367
+ "target": "id",
368
+ "value": "bind:Widgets.UserControllerTable2.selecteditem.userId",
369
+ "type": "integer"
370
+ }
371
+ ]
372
+ }
373
+
374
+ * This function will convert it to
375
+ [
376
+ {
377
+ "target": "list.q",
378
+ "type": "string",
379
+ "value": "X"
380
+ },
381
+ {
382
+ "target": "update.id",
383
+ "value": "bind:Widgets.UserControllerTable2.selecteditem.userId",
384
+ "type": "integer"
385
+ }
386
+ ]
387
+
388
+ * The bindings will be evaluated through the base-manager initBinding method and will
389
+ * be stored in variable.dataBinding as follows:
390
+ {
391
+ list: {
392
+ q: "X"
393
+ },
394
+ update: {
395
+ id: "evaluated value"
396
+ }
397
+ }
398
+ * @param variable
399
+ */
400
+ CrudVariableManager.prototype.initBinding = function (variable) {
401
+ var crudBindInfo = variable.dataBinding || {}, flattenedBindInfo = [];
402
+ forEach(crudBindInfo, function (bindNodes, operationType) {
403
+ bindNodes = bindNodes || [];
404
+ bindNodes.forEach(function (bindNode) {
405
+ bindNode.target = operationType + '.' + bindNode.target;
406
+ flattenedBindInfo.push(bindNode);
407
+ });
408
+ });
409
+ variable.dataBinding = flattenedBindInfo;
410
+ _super.prototype.initBinding.call(this, variable);
411
+ };
412
+ return CrudVariableManager;
413
+ }(ServiceVariableManager));
414
+ export { CrudVariableManager };
415
+ //# sourceMappingURL=crud-variable.manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crud-variable.manager.js","sourceRoot":"./","sources":["src/manager/variable/crud-variable.manager.ts"],"names":[],"mappings":"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","sourcesContent":["// import { $invokeWatchers, getClonedObject, getValidJSON, isDefined, isPageable, isValidWebURL, noop, triggerFn, xmlToJson } from '@wm/core';\nimport { getClonedObject, triggerFn } from \"../../util/utils\";\nimport { CrudVariable } from '../../model/variable/crud-variable';\nimport { ServiceVariableUtils } from '../../util/variable/service-variable.utils';\nimport { $queue } from '../../util/inflight-queue';\nimport { VARIABLE_CONSTANTS, WS_CONSTANTS } from '../../constants/variables.constants';\nimport {appManager, setInput} from './../../util/variable/variables.utils';\nimport { getEvaluatedOrderBy, httpService, initiateCallback, metadataService, getErrMessage } from '../../util/variable/variables.utils';\nimport { getAccessToken } from '../../util/oAuth.utils';\nimport {ServiceVariableManager} from './service-variable.manager';\n\nimport {get, isObject, forEach, merge, omit, isArray, includes, extend, isEmpty} from 'lodash-es';\n\nexport class CrudVariableManager extends ServiceVariableManager {\n\n fileUploadResponse: any = [];\n fileUploadCount = 0;\n totalFilesCount = 0;\n successFileUploadCount = 0;\n failedFileUploadCount = 0;\n\n private getPaginationInfo(variable, inputFields, options?) {\n if (!options || !options.operation) {\n options.operation = 'list';\n }\n const serviceDef = getClonedObject(metadataService.getByCrudId(variable.crudOperationId, variable.getPrefabName()));\n let methodInfo = serviceDef === null ? null : get(serviceDef, 'wmServiceOperationInfo');\n methodInfo = serviceDef.filter(function(item) {\n return options.operation === item.operationType;\n })[0];\n if (!methodInfo) {\n return methodInfo;\n }\n // methodInfo.paginationInfo = {\n // \"contentMapping\": \"content\",\n // \"ascSortExpression\": \"{{fieldName}} a\",\n // \"descSortExpression\": \"{{fieldName}} d\",\n // //\"defaultSortExpression\": \"id\",\n // \"totalMapping\": \"totalElements\",\n // \"pageMapping\": {\n // \"in\": \"query\",\n // \"name\": \"pageNum\",\n // \"description\": \"the existing id\",\n // \"type\": \"integer\",\n // \"required\": true\n // },\n // \"sizeMapping\": {\n // \"in\": \"query\",\n // \"name\": \"limit\",\n // \"description\": \"the existing id\",\n // \"type\": \"integer\",\n // \"required\": true\n // },\n // \"sortMapping\": {\n // \"name\": \"sortInfo\",\n // \"in\": \"query\",\n // \"description\": \"the sorting criteria\",\n // \"required\": true,\n // \"type\": \"integer\"\n // }\n // };\n methodInfo.paginationInfo = null;\n return methodInfo.paginationInfo;\n }\n\n private getOperationInfo(variable, options) {\n let serviceDef = getClonedObject(metadataService.getByCrudId(variable.crudOperationId, variable.getPrefabName()));\n let methodInfo;\n // fallback if there is no operation\n if (options && !options.operation) {\n options.operation = 'list';\n }\n if (!serviceDef.length) {\n return;\n }\n methodInfo = serviceDef.filter(function(item) {\n return options.operation === item.operationType;\n })[0];\n return methodInfo ? methodInfo.wmServiceOperationInfo : {invalid: true};\n }\n /**\n * gets the service operation info against a service variable\n * this is extracted from the metadataservice\n * @param variable\n * @param inputFields: sample values, if provided, will be set against params in the definition\n * @param options\n * @returns {any}\n */\n private getMethodInfoForCrud(variable, inputFields, options?) {\n const methodInfo = this.getOperationInfo(variable, options);\n if (!methodInfo || methodInfo.invalid) {\n return methodInfo;\n }\n const securityDefnObj = get(methodInfo.securityDefinitions, '0'),\n isOAuthTypeService = securityDefnObj && (securityDefnObj.type === VARIABLE_CONSTANTS.REST_SERVICE.SECURITY_DEFN.OAUTH2);\n if (methodInfo.parameters) {\n methodInfo.parameters.forEach(function (param) {\n // Ignore readOnly params in case of formData file params will be duplicated\n if (param.readOnly) {\n return;\n }\n param.sampleValue = inputFields[param.name];\n /* supporting pagination for query service variable */\n if (VARIABLE_CONSTANTS.PAGINATION_PARAMS.indexOf(param.name) !== -1) {\n if (param.name === 'size') {\n param.sampleValue = options.size || param.sampleValue || parseInt(variable.maxResults, 10);\n } else if (param.name === 'page') {\n param.sampleValue = options.page || param.sampleValue || 1;\n } else if (param.name === 'sort') {\n param.sampleValue = getEvaluatedOrderBy(variable.orderBy, options.orderBy) || param.sampleValue || '';\n }\n } else if (param.name === 'access_token' && isOAuthTypeService) {\n param.sampleValue = getAccessToken(securityDefnObj[VARIABLE_CONSTANTS.REST_SERVICE.OAUTH_PROVIDER_KEY], null);\n }\n });\n }\n return methodInfo;\n }\n\n /**\n * proxy for the invoke call\n * Request Info is constructed\n * if error found, error is thrown\n * else, call is made\n * @param {CrudVariable} variable\n * @param options\n * @param {Function} success\n * @param {Function} error\n * @returns {any}\n * @private\n */\n protected _invoke (variable: CrudVariable, options: any, success: Function, error: Function) {\n let inputFields = getClonedObject(options.inputFields || {});\n if (options.operation === 'delete') {\n inputFields = getClonedObject(options.row || inputFields.row || options.inputFields || variable.dataBinding);\n } else if (options.operation === 'create' && options.row) {\n inputFields = getClonedObject(options.row);\n } else if (options.operation === 'update' && options.row) {\n inputFields = getClonedObject(options.row);\n }\n // EVENT: ON_BEFORE_UPDATE\n const output: any = initiateCallback(VARIABLE_CONSTANTS.EVENT.BEFORE_UPDATE, variable, inputFields, options);\n let successHandler;\n let errorHandler;\n\n if (output === false) {\n $queue.process(variable);\n triggerFn(error);\n return;\n }\n if (isObject(output)) {\n inputFields = output;\n }\n const opInfo = this.getOperationInfo(variable, options);\n let bodyParam;\n if (opInfo && opInfo.parameters) {\n bodyParam = opInfo.parameters.filter(function(op) {\n return op.parameterType === 'body' || op.parameterType === 'formData';\n })[0];\n }\n // merge fields with bindings\n const bindingFields = get(variable.dataBinding, options.operation) || {};\n // bindings from setInput can come along with the body param, so employee.age will have to be converted to age\n if (bodyParam && bindingFields[bodyParam.name]) {\n forEach(bindingFields, function(bindingFieldVal, bindingFieldKey) {\n if (bindingFieldKey === bodyParam.name) {\n merge(inputFields, bindingFieldVal);\n } else {\n inputFields[bindingFieldKey] = bindingFieldVal;\n }\n });\n } else {\n merge(inputFields, bindingFields);\n }\n if ((options.operation === 'create' || options.operation === 'update') && (!bodyParam || !inputFields[bodyParam.name])) {\n let bodyTypeKeys = [], nonBodyParam;\n // only merge body/formData type params to the requestBody.\n for (const fieldName in inputFields) {\n nonBodyParam = opInfo.parameters.filter(function(param) {\n return param.name === fieldName && param.parameterType !== 'body' && param.parameterType !== 'formData';\n });\n if (nonBodyParam.length) {\n bodyTypeKeys.push(fieldName);\n }\n }\n const reqBodyFields = omit(inputFields, bodyTypeKeys);\n if (bodyParam) {\n inputFields[bodyParam.name] = getClonedObject(reqBodyFields);\n } else {\n inputFields.RequestBody = getClonedObject(reqBodyFields);\n }\n }\n let paginationInfo;\n const operationInfo = this.getMethodInfoForCrud(variable, inputFields, options);\n let pathParam, bodyTypeParam;\n if (!variable.paginationTransformationRequired && operationInfo && !operationInfo.invalid) {\n if (operationInfo.parameters) {\n operationInfo.parameters.forEach(function (parameter) {\n if (parameter.parameterType === 'path') {\n pathParam = parameter.name;\n } else if (parameter.parameterType === 'body') {\n bodyTypeParam = parameter.name;\n inputFields[bodyTypeParam] = getClonedObject(inputFields);\n }\n });\n }\n for (const key in inputFields) {\n if (key !== bodyTypeParam) {\n delete inputFields[key];\n }\n }\n if (pathParam && inputFields[bodyTypeParam]) {\n inputFields[pathParam] = getClonedObject(inputFields[bodyTypeParam][pathParam]);\n }\n }\n // else {\n // inputFields.totalMapping = paginationInfo && paginationInfo.totalMapping;\n // }\n const requestParams = ServiceVariableUtils.constructRequestParams(variable, operationInfo, inputFields);\n inputFields.sortInfo = options.orderBy;\n // check errors\n if (requestParams.error) {\n if (requestParams.error.type === VARIABLE_CONSTANTS.REST_SERVICE.ERR_TYPE.CRUD_OPERATION_MISSING) {\n requestParams.error.message = requestParams.error.message.replace('$operation', options.operation);\n }\n if (options.preventMissingOpMsg) {\n $queue.process(variable);\n return Promise.resolve('');\n }\n const info = this.handleRequestMetaError(requestParams, variable, success, error, options);\n const reason = (get(info, 'error.message') || 'An error occurred while triggering the variable');\n triggerFn(error);\n return Promise.reject(reason);\n }\n\n // file upload\n if (ServiceVariableUtils.isFileUploadRequest(variable)) {\n const uploadPromise = this.uploadFile(variable, options, success, error, inputFields, requestParams);\n if (uploadPromise) {\n return uploadPromise;\n }\n }\n\n // file download\n if (operationInfo && isArray(operationInfo.produces) && includes(operationInfo.produces, WS_CONSTANTS.CONTENT_TYPES.OCTET_STREAM)) {\n // ToDo - variable seperation\n return variable.simulateFileDownload(requestParams, variable.dataBinding.file || variable.name, variable.dataBinding.exportType, function () {\n initiateCallback(VARIABLE_CONSTANTS.EVENT.SUCCESS, variable, null, null, null);\n $queue.process(variable);\n triggerFn(success);\n }, function () {\n initiateCallback(VARIABLE_CONSTANTS.EVENT.ERROR, variable, null, null, null);\n $queue.process(variable);\n triggerFn(error);\n }, variable.dataBinding);\n }\n\n // notify variable progress\n this.notifyInflight(variable, !options.skipToggleState);\n\n successHandler = (response, resolve, inputObj?) => {\n if (response && response.type) {\n if (variable.paginationTransformationRequired) {\n let json = JSON.parse(response.body);\n const pageable = {\n 'content' : json[paginationInfo.contentMapping],\n 'first' : inputObj[paginationInfo.pageMapping.name] === 1 ? true : false,\n 'last' : inputObj[paginationInfo.pageMapping.name] === json[inputFields.totalMapping] ? true : false,\n 'number' : inputObj[paginationInfo.pageMapping.name] - 1,\n 'numberOfElements': inputObj[paginationInfo.sizeMapping.name],\n 'size' : inputObj[paginationInfo.sizeMapping.name],\n 'sort' : null,\n 'totalElements' : json[inputFields.totalMapping],\n 'totalPages' : Math.ceil(json[inputFields.totalMapping] / inputObj[paginationInfo.sizeMapping.name])\n };\n if (inputObj.sortInfo) {\n pageable.sort = [{direction: inputObj.sortInfo.split(' ')[1].toUpperCase(), property: inputObj.sortInfo.split(' ')[0], ignoreCase: false, nullHandling: \"NATIVE\", ascending: inputObj.sortInfo.split(' ')[1] === 'asc' ? true : false}];\n }\n json = getClonedObject(pageable);\n response.body = JSON.stringify(json);\n }\n const data = this.processSuccessResponse(response.body, variable, extend(options, {'xhrObj': response}), success, response.headers, operationInfo);\n // notify variable success\n this.notifyInflight(variable, false, data);\n resolve(response);\n }\n };\n\n errorHandler = (err, reject) => {\n const errMsg = getErrMessage(err, variable.httpService.getLocale());\n // notify variable error\n this.notifyInflight(variable, false);\n this.processErrorResponse(variable, errMsg, error, err, options.skipNotification);\n reject({\n error: errMsg,\n details: err\n });\n };\n\n // make the call and return a promise to the user to support script calls made by users\n return new Promise((resolve, reject) => {\n requestParams.responseType = 'text'; // this is to return text response. JSON & XML-to-JSON parsing is handled in success handler.\n this.httpCall(requestParams, variable).then((response) => {\n successHandler(response, resolve, inputFields);\n }, err => {\n errorHandler(err, reject);\n });\n // the _observable property on variable is used store the observable using which the network call is made\n // this can be used to cancel the variable calls.\n });\n }\n\n // *********************************************************** PUBLIC ***********************************************************//\n\n public invoke(variable, options, success, error) {\n options = options || {};\n appManager.notify('check-state-persistence-options', {\n options: options,\n variable: variable\n });\n options.operation = options.operation || 'list';\n options.inputFields = options.inputFields || getClonedObject(variable.dataBinding[options.operation]);\n return $queue.submit(variable).then(this._invoke.bind(this, variable, options, success, error), error);\n }\n\n public getInputParms(variable) {\n const wmServiceOperationInfo = get(metadataService.getByOperationId(variable.operationId, variable.getPrefabName()), 'wmServiceOperationInfo');\n return get(wmServiceOperationInfo, 'parameters');\n }\n\n public setInput(variable, key, val, options, type?) {\n type = type || 'list';\n if (isEmpty(variable.dataBinding[type])) {\n variable.dataBinding[type] = {};\n }\n return setInput(variable.dataBinding[type], key, val, options);\n }\n\n /**\n * Initializes the bindings for the CRUD variable\n * flatten the bindings (categorised by operation name) to a list of bindings\n * each binding object's target is changed appended with the operation type\n * E.g. Input binding will be like:\n {\n \"list\": [\n {\n \"target\": \"q\",\n \"type\": \"string\",\n \"value\": \"X\"\n }\n ],\n \"update\": [\n {\n \"target\": \"id\",\n \"value\": \"bind:Widgets.UserControllerTable2.selecteditem.userId\",\n \"type\": \"integer\"\n }\n ]\n }\n\n * This function will convert it to\n [\n {\n \"target\": \"list.q\",\n \"type\": \"string\",\n \"value\": \"X\"\n },\n {\n \"target\": \"update.id\",\n \"value\": \"bind:Widgets.UserControllerTable2.selecteditem.userId\",\n \"type\": \"integer\"\n }\n ]\n\n * The bindings will be evaluated through the base-manager initBinding method and will\n * be stored in variable.dataBinding as follows:\n {\n list: {\n q: \"X\"\n },\n update: {\n id: \"evaluated value\"\n }\n }\n * @param variable\n */\n public initBinding(variable) {\n let crudBindInfo = variable.dataBinding || {},\n flattenedBindInfo = [];\n\n forEach(crudBindInfo, (bindNodes, operationType) => {\n bindNodes = bindNodes || [];\n bindNodes.forEach((bindNode)=>{\n bindNode.target = operationType + '.' + bindNode.target;\n flattenedBindInfo.push(bindNode);\n });\n });\n variable.dataBinding = flattenedBindInfo;\n\n super.initBinding(variable);\n }\n}\n"]}