1- /*! dynamics-web-api-callbacks v1.6.4 (c) 2020 Aleksandr Rogov */
1+ /*! dynamics-web-api-callbacks v1.6.5 (c) 2020 Aleksandr Rogov */
22( function webpackUniversalModuleDefinition ( root , factory ) {
33 if ( typeof exports === 'object' && typeof module === 'object' )
44 module . exports = factory ( ) ;
@@ -884,19 +884,24 @@ function stringifyData(data, config) {
884884 return stringifiedData ;
885885}
886886
887- var convertToBatch = function ( requestCollection , config ) {
887+ var _batchRequestCollection = [ ] ;
888+ var _responseParseParams = [ ] ;
889+
890+ var _convertToBatch = function ( requestCollection , config ) {
888891 var batchBoundary = 'dwa_batch_' + Utility . generateUUID ( ) ;
889892
890893 var batchBody = [ ] ;
891894 var currentChangeSet = null ;
892895 var contentId = 100000 ;
893896
894897 for ( var i = 0 ; i < requestCollection . length ; i ++ ) {
898+ var rawRequest = requestCollection [ i ] . request ;
899+
895900 if ( config . useEntityNames ) {
896- requestCollection [ i ] . request . collection = findCollectionName ( requestCollection [ i ] . request . collection ) || requestCollection [ i ] . request . collection ;
901+ rawRequest . collection = findCollectionName ( rawRequest . collection ) || rawRequest . collection ;
897902 }
898903
899- var request = RequestConverter . convertRequest ( requestCollection [ i ] . request , "executeBatch" , config ) ;
904+ var request = RequestConverter . convertRequest ( rawRequest , "executeBatch" , config ) ;
900905 var method = requestCollection [ i ] . method ;
901906 var isGet = method === 'GET' ;
902907
@@ -953,7 +958,7 @@ var convertToBatch = function (requestCollection, config) {
953958 batchBody . push ( key + ': ' + request . headers [ key ] ) ;
954959 }
955960
956- var data = requestCollection [ i ] . request . data || requestCollection [ i ] . request . entity ;
961+ var data = rawRequest . data || rawRequest . entity ;
957962
958963 if ( ! isGet && data ) {
959964 batchBody . push ( '\n' + stringifyData ( data , config ) ) ;
@@ -969,9 +974,6 @@ var convertToBatch = function (requestCollection, config) {
969974 return { boundary : batchBoundary , body : batchBody . join ( '\n' ) } ;
970975} ;
971976
972- var batchRequestCollection = [ ] ;
973- var responseParseParams = [ ] ;
974-
975977/**
976978 * Sends a request to given URL with given parameters
977979 *
@@ -992,28 +994,18 @@ function sendRequest(method, path, config, data, additionalHeaders, responsePara
992994 responseParams = responseParams || { } ;
993995
994996 //add response parameters to parse
995- responseParseParams . push ( responseParams ) ;
997+ _responseParseParams . push ( responseParams ) ;
996998
997999 //stringify passed data
9981000 var stringifiedData = stringifyData ( data , config ) ;
9991001
1000- //if (isBatch) {
1001- // batchRequestCollection.push({
1002- // method: method, path: path, config: config, data: data, headers: additionalHeaders
1003- // });
1004- // return;
1005- //}
1006- //if (!isBatch)
1007- // stringifiedData = stringifyData(data, config);
1008- //}
1009-
10101002 if ( path === '$batch' ) {
1011- var batchResult = convertToBatch ( batchRequestCollection , config ) ;
1003+ var batchResult = _convertToBatch ( _batchRequestCollection , config ) ;
10121004
10131005 stringifiedData = batchResult . body ;
10141006
10151007 //clear an array of requests
1016- batchRequestCollection . length = 0 ;
1008+ _batchRequestCollection . length = 0 ;
10171009
10181010 additionalHeaders = setStandardHeaders ( additionalHeaders ) ;
10191011 additionalHeaders [ 'Content-Type' ] = 'multipart/mixed;boundary=' + batchResult . boundary ;
@@ -1081,7 +1073,7 @@ function sendRequest(method, path, config, data, additionalHeaders, responsePara
10811073 uri : config . webApiUrl + path ,
10821074 data : stringifiedData ,
10831075 additionalHeaders : additionalHeaders ,
1084- responseParams : responseParseParams ,
1076+ responseParams : _responseParseParams ,
10851077 successCallback : successCallback ,
10861078 errorCallback : errorCallback ,
10871079 isAsync : isAsync ,
@@ -1098,20 +1090,8 @@ function sendRequest(method, path, config, data, additionalHeaders, responsePara
10981090 }
10991091}
11001092
1101- function _getEntityNames ( entityName , config , successCallback , errorCallback ) {
1102-
1103- //var xrmUtility = Utility.getXrmUtility();
1093+ function _getCollectionNames ( entityName , config , successCallback , errorCallback ) {
11041094
1105- ////try using Xrm.Utility.getEntityMetadata first (because D365 caches metadata)
1106- //if (!Utility.isNull(xrmUtility) && typeof xrmUtility.getEntityMetadata === "function") {
1107- // xrmUtility.getEntityMetadata(entityName, []).then(function (response) {
1108- // if (!response)
1109- // successCallback(entityName);
1110- // else
1111- // successCallback(response.EntitySetName);
1112- // }, errorCallback);
1113- //}
1114- //else {
11151095 //make a web api call for Node.js apps
11161096 if ( ! Utility . isNull ( _entityNames ) ) {
11171097 successCallback ( findCollectionName ( entityName ) || entityName ) ;
@@ -1148,7 +1128,7 @@ function _isEntityNameException(entityName) {
11481128 return exceptions . indexOf ( entityName ) > - 1 ;
11491129}
11501130
1151- function _getCollectionName ( entityName , config , successCallback , errorCallback ) {
1131+ function _checkCollectionName ( entityName , config , successCallback , errorCallback ) {
11521132
11531133 if ( _isEntityNameException ( entityName ) || Utility . isNull ( entityName ) ) {
11541134 successCallback ( entityName ) ;
@@ -1163,41 +1143,30 @@ function _getCollectionName(entityName, config, successCallback, errorCallback)
11631143 }
11641144
11651145 try {
1166- _getEntityNames ( entityName , config , successCallback , errorCallback ) ;
1167-
1168-
1169- //var collectionName = findCollectionName(entityName);
1170-
1171- //if (Utility.isNull(collectionName)) {
1172- // _getEntityNames(entityName, config, successCallback, errorCallback);
1173- //}
1174- //else {
1175- // successCallback(collectionName);
1176- //}
1146+ _getCollectionNames ( entityName , config , successCallback , errorCallback ) ;
11771147 }
11781148 catch ( error ) {
11791149 errorCallback ( { message : 'Unable to fetch Collection Names. Error: ' + error . message } ) ;
11801150 }
11811151}
11821152
11831153function makeRequest ( method , request , functionName , config , responseParams , resolve , reject ) {
1184- var successCallback = function ( collectionName ) {
1185- request . collection = collectionName ;
1186- var result = RequestConverter . convertRequest ( request , functionName , config ) ;
1187- sendRequest ( method , result . url , config , request . data || request . entity , result . headers , responseParams , resolve , reject , request . isBatch , result . async ) ;
1188- } ;
1189-
1154+ //no need to make a request to web api if it's a part of batch
11901155 if ( request . isBatch ) {
11911156 //add response parameters to parse
1192- responseParseParams . push ( responseParams || { } ) ;
1157+ _responseParseParams . push ( responseParams || { } ) ;
11931158
1194- batchRequestCollection . push ( { method : method , request : request } ) ;
1159+ _batchRequestCollection . push ( { method : method , request : request } ) ;
11951160
11961161 //check for errors
11971162 RequestConverter . convertRequest ( request , functionName , config ) ;
11981163 }
11991164 else {
1200- _getCollectionName ( request . collection , config , successCallback , reject ) ;
1165+ _checkCollectionName ( request . collection , config , function ( collectionName ) {
1166+ request . collection = collectionName ;
1167+ var result = RequestConverter . convertRequest ( request , functionName , config ) ;
1168+ sendRequest ( method , result . url , config , request . data || request . entity , result . headers , responseParams , resolve , reject , request . isBatch , result . async ) ;
1169+ } , reject ) ;
12011170 }
12021171}
12031172
0 commit comments