diff --git a/dist/dwa.js b/dist/dwa.js
index 67a160b..d5a74f1 100644
--- a/dist/dwa.js
+++ b/dist/dwa.js
@@ -1,4 +1,4 @@
-/*! dwa v1.1.4 (c) 2017 Aleksandr Rogov */
+/*! dwa v1.2.0 (c) 2017 Aleksandr Rogov */
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
diff --git a/dist/dynamics-web-api-callbacks.js b/dist/dynamics-web-api-callbacks.js
index 9edd3a9..5ca6a4c 100644
--- a/dist/dynamics-web-api-callbacks.js
+++ b/dist/dynamics-web-api-callbacks.js
@@ -1,4 +1,4 @@
-/*! dynamics-web-api-callbacks v1.1.4 (c) 2017 Aleksandr Rogov */
+/*! dynamics-web-api-callbacks v1.2.0 (c) 2017 Aleksandr Rogov */
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
@@ -74,7 +74,7 @@ return /******/ (function(modules) { // webpackBootstrap
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 11);
+/******/ return __webpack_require__(__webpack_require__.s = 12);
/******/ })
/************************************************************************/
/******/ ([
@@ -152,12 +152,12 @@ module.exports = DWA;
function throwParameterError(functionName, parameterName, type) {
throw new Error(type
- ? functionName + " requires the " + parameterName + " parameter is a " + type
+ ? functionName + " requires the " + parameterName + " parameter to be of type " + type
: functionName + " requires the " + parameterName + " parameter.");
};
var ErrorHelper = {
- errorHandler: function (req) {
+ handleErrorResponse: function (req) {
///
/// Private function return an Error object to the errorCallback
///
@@ -165,7 +165,7 @@ var ErrorHelper = {
/// The XMLHttpRequest response that returned an error.
///
///Error
- return new Error("Error : " +
+ throw new Error("Error: " +
req.status + ": " +
req.message);
},
@@ -226,6 +226,11 @@ var ErrorHelper = {
/// The error message text to include when the error is thrown.
///
if (typeof parameter != "number") {
+ if (typeof parameter === "string" && parameter) {
+ if (!isNaN(parseInt(parameter))) {
+ return;
+ }
+ }
throwParameterError(functionName, parameterName, "Number");
}
},
@@ -309,9 +314,6 @@ String.prototype.startsWith = function (searchString, position) {
/***/ (function(module, exports, __webpack_require__) {
-var dateReviver = __webpack_require__(6);
-var parseResponseHeaders = __webpack_require__(7);
-
/**
* Sends a request to given URL with given parameters
*
@@ -319,78 +321,57 @@ var parseResponseHeaders = __webpack_require__(7);
* @param {string} uri - Request URI.
* @param {Function} successCallback - A callback called on success of the request.
* @param {Function} errorCallback - A callback called when a request failed.
- * @param {string} [data] - Data to send in the request.
- * @param {Object} [additionalHeaders] - Object with headers. IMPORTANT! This object does not contain default headers needed for every request.
+ * @param {Object} config - DynamicsWebApi config.
+ * @param {Object} [data] - Data to send in the request.
+ * @param {Object} [additionalHeaders] - Object with additional headers. IMPORTANT! This object does not contain default headers needed for every request.
+ * @returns {Promise}
*/
-var xhrRequest = function (method, uri, data, additionalHeaders, successCallback, errorCallback) {
- var request = new XMLHttpRequest();
- request.open(method, encodeURI(uri), true);
- request.setRequestHeader("OData-MaxVersion", "4.0");
- request.setRequestHeader("OData-Version", "4.0");
- request.setRequestHeader("Accept", "application/json");
- request.setRequestHeader("Content-Type", "application/json; charset=utf-8");
-
- //set additional headers
- if (additionalHeaders != null) {
- for (var key in additionalHeaders) {
- request.setRequestHeader(key, additionalHeaders[key]);
+module.exports = function sendRequest(method, uri, config, data, additionalHeaders, successCallback, errorCallback) {
+ if (config.impersonate && (!additionalHeaders || (additionalHeaders && !additionalHeaders["MSCRMCallerID"]))) {
+ if (!additionalHeaders) {
+ additionalHeaders = {};
}
+ additionalHeaders['MSCRMCallerID'] = config.impersonate;
}
- request.onreadystatechange = function () {
- if (request.readyState === 4) {
- switch (request.status) {
- case 200: // Success with content returned in response body.
- case 201: // Success with content returned in response body.
- case 204: // Success with no content returned in response body.
- case 304: {// Success with Not Modified
- var responseData = null;
- if (request.responseText) {
- responseData = JSON.parse(request.responseText, dateReviver);
- }
+ var stringifiedData;
+ if (data) {
+ stringifiedData = JSON.stringify(data, function (key, value) {
+ /// Description
+ if (key.endsWith("@odata.bind") && typeof value === "string" && !value.startsWith(config.webApiUrl)) {
+ value = config.webApiUrl + value;
+ }
- var response = {
- data: responseData,
- headers: parseResponseHeaders(request.getAllResponseHeaders()),
- status: request.status
- };
+ return value;
+ });
+ }
- successCallback(response);
- break;
- }
- default: // All other statuses are error cases.
- var error;
- try {
- error = JSON.parse(request.response).error;
- } catch (e) {
- error = new Error("Unexpected Error");
- }
- error.status = request.status;
- errorCallback(error);
- break;
- }
+ var executeRequest;
+ if (typeof XMLHttpRequest !== 'undefined') {
+ executeRequest = __webpack_require__(8);
+ }
- request = null;
- }
- };
- request.onerror = function () {
- errorCallback({ message: "Network Error" });
- request = null;
- };
+ var sendInternalRequest = function (token) {
+ if (token) {
+ if (!additionalHeaders) {
+ additionalHeaders = {};
+ }
+ additionalHeaders['Authorization'] = "Bearer: " + token;
+ }
- request.ontimeout = function (error) {
- errorCallback({ message: "Request Timed Out" });
- request = null;
+ executeRequest(method, config.webApiUrl + uri, stringifiedData, additionalHeaders, successCallback, errorCallback);
};
- data
- ? request.send(data)
- : request.send();
+ //call a token refresh callback only if it is set and there is no "Authorization" header set yet
+ if (config.onTokenRefresh && (!additionalHeaders || (additionalHeaders && !additionalHeaders["Authorization"]))) {
+ config.onTokenRefresh(sendInternalRequest);
+ }
+ else {
+ sendInternalRequest();
+ }
};
-module.exports = xhrRequest;
-
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
@@ -516,6 +497,11 @@ function convertRequestOptions (request, functionName, url, joinSymbol) {
headers['MSCRMCallerID'] = ErrorHelper.guidParameterCheck(request.impersonate, "DynamicsWebApi." + functionName, "request.impersonate");
}
+ if (request.token) {
+ ErrorHelper.stringParameterCheck(request.token, "DynamicsWebApi." + functionName, "request.token");
+ headers["Authorization"] = "Bearer: " + request.token;
+ }
+
if (request.expand != null && request.expand.length) {
ErrorHelper.arrayParameterCheck(request.expand, "DynamicsWebApi." + functionName, "request.expand");
var expandRequestArray = [];
@@ -587,7 +573,7 @@ var Utility = {
* @param {Object} [parameters] - Function's input parameters. Example: { param1: "test", param2: 3 }.
* @returns {string}
*/
- buildFunctionParameters: __webpack_require__(8),
+ buildFunctionParameters: __webpack_require__(9),
/**
* Parses a paging cookie returned in response
@@ -596,7 +582,7 @@ var Utility = {
* @param {number} currentPageNumber - A current page number. Fix empty paging-cookie for complex fetch xmls.
* @returns {{cookie: "", number: 0, next: 1}}
*/
- getFetchXmlPagingCookie: __webpack_require__(10),
+ getFetchXmlPagingCookie: __webpack_require__(11),
/**
* Converts a response to a reference object
@@ -604,7 +590,7 @@ var Utility = {
* @param {Object} responseData - Response object
* @returns {ReferenceObject}
*/
- convertToReferenceObject: __webpack_require__(9)
+ convertToReferenceObject: __webpack_require__(10)
}
module.exports = Utility;
@@ -655,6 +641,93 @@ module.exports = function parseResponseHeaders(headerStr) {
/***/ }),
/* 8 */
+/***/ (function(module, exports, __webpack_require__) {
+
+
+var dateReviver = __webpack_require__(6);
+var parseResponseHeaders = __webpack_require__(7);
+
+/**
+ * Sends a request to given URL with given parameters
+ *
+ * @param {string} method - Method of the request.
+ * @param {string} uri - Request URI.
+ * @param {Function} successCallback - A callback called on success of the request.
+ * @param {Function} errorCallback - A callback called when a request failed.
+ * @param {string} [data] - Data to send in the request.
+ * @param {Object} [additionalHeaders] - Object with headers. IMPORTANT! This object does not contain default headers needed for every request.
+ */
+var xhrRequest = function (method, uri, data, additionalHeaders, successCallback, errorCallback) {
+ var request = new XMLHttpRequest();
+ request.open(method, encodeURI(uri), true);
+ request.setRequestHeader("OData-MaxVersion", "4.0");
+ request.setRequestHeader("OData-Version", "4.0");
+ request.setRequestHeader("Accept", "application/json");
+ request.setRequestHeader("Content-Type", "application/json; charset=utf-8");
+
+ //set additional headers
+ if (additionalHeaders != null) {
+ for (var key in additionalHeaders) {
+ request.setRequestHeader(key, additionalHeaders[key]);
+ }
+ }
+
+ request.onreadystatechange = function () {
+ if (request.readyState === 4) {
+ switch (request.status) {
+ case 200: // Success with content returned in response body.
+ case 201: // Success with content returned in response body.
+ case 204: // Success with no content returned in response body.
+ case 304: {// Success with Not Modified
+ var responseData = null;
+ if (request.responseText) {
+ responseData = JSON.parse(request.responseText, dateReviver);
+ }
+
+ var response = {
+ data: responseData,
+ headers: parseResponseHeaders(request.getAllResponseHeaders()),
+ status: request.status
+ };
+
+ successCallback(response);
+ break;
+ }
+ default: // All other statuses are error cases.
+ var error;
+ try {
+ error = JSON.parse(request.response).error;
+ } catch (e) {
+ error = new Error("Unexpected Error");
+ }
+ error.status = request.status;
+ errorCallback(error);
+ break;
+ }
+
+ request = null;
+ }
+ };
+
+ request.onerror = function () {
+ errorCallback({ message: "Network Error" });
+ request = null;
+ };
+
+ request.ontimeout = function (error) {
+ errorCallback({ message: "Request Timed Out" });
+ request = null;
+ };
+
+ data
+ ? request.send(data)
+ : request.send();
+};
+
+module.exports = xhrRequest;
+
+/***/ }),
+/* 9 */
/***/ (function(module, exports) {
/**
@@ -690,7 +763,7 @@ module.exports = function buildFunctionParameters(parameters) {
};
/***/ }),
-/* 9 */
+/* 10 */
/***/ (function(module, exports) {
/**
@@ -712,7 +785,7 @@ module.exports = function convertToReferenceObject(responseData) {
}
/***/ }),
-/* 10 */
+/* 11 */
/***/ (function(module, exports) {
/**
@@ -749,7 +822,7 @@ module.exports = function getFetchXmlPagingCookie(pageCookies, currentPageNumber
}
/***/ }),
-/* 11 */
+/* 12 */
/***/ (function(module, exports, __webpack_require__) {
var DWA = __webpack_require__(0);
@@ -779,176 +852,90 @@ if (!String.prototype.endsWith || !String.prototype.startsWith) {
*/
function DynamicsWebApi(config) {
+ var _internalConfig = {
+ webApiVersion: "8.0",
+ webApiUrl: "",
+ impersonate: null
+ };
+
+ if (!config) {
+ config = _internalConfig;
+ }
+
var _context = function () {
- ///
- /// Private function to the context object.
- ///
- ///Context
- if (typeof GetGlobalContext != "undefined")
- { return GetGlobalContext(); }
+
+ if (typeof GetGlobalContext != "undefined") {
+ return GetGlobalContext();
+ }
else {
if (typeof Xrm != "undefined") {
return Xrm.Page.context;
}
- else { throw new Error("Xrm Context is not available."); }
+ else {
+ throw new Error("Xrm Context is not available.");
+ }
}
};
var _getClientUrl = function () {
- ///
- /// Private function to return the server URL from the context
- ///
- ///String
-
- var clientUrl = Xrm.Page.context.getClientUrl();
- if (clientUrl.match(/\/$/)) {
- clientUrl = clientUrl.substring(0, clientUrl.length - 1);
- }
- return clientUrl;
- };
-
- var _impersonateUserId = null;
- var _webApiVersion = "8.0";
-
- var _initUrl = function () {
- return _getClientUrl() + "/api/data/v" + _webApiVersion + "/";
- }
+ var context = _context();
- var _webApiUrl = _initUrl();
+ if (context) {
+ var clientUrl = context.getClientUrl();
- var _propertyReplacer = function (key, value) {
- /// Description
- if (key.endsWith("@odata.bind") && typeof value === "string" && !value.startsWith(_webApiUrl)) {
- value = _webApiUrl + value;
+ if (clientUrl.match(/\/$/)) {
+ clientUrl = clientUrl.substring(0, clientUrl.length - 1);
+ }
+ return clientUrl;
}
- return value;
+ return "";
};
- var _errorHandler = function (req) {
- ///
- /// Private function return an Error object to the errorCallback
- ///
- ///
- /// The XMLHttpRequest response that returned an error.
- ///
- ///Error
- return new Error("Error : " +
- req.status + ": " +
- req.statusText + ": " +
- JSON.parse(req.responseText).error.message);
+ var _initUrl = function () {
+ return _getClientUrl() + "/api/data/v" + _internalConfig.webApiVersion + "/";
};
- var _parameterCheck = function (parameter, functionName, parameterName, type) {
- ///
- /// Private function used to check whether required parameters are null or undefined
- ///
- ///
- /// The parameter to check;
- ///
- ///
- /// The error message text to include when the error is thrown.
- ///
- if ((typeof parameter === "undefined") || parameter === null || parameter == "") {
- throw new Error(type
- ? functionName + " requires the " + parameterName + " parameter with type: " + type
- : functionName + " requires the " + parameterName + " parameter.");
- }
- };
- var _stringParameterCheck = function (parameter, functionName, parameterName) {
- ///
- /// Private function used to check whether required parameters are null or undefined
- ///
- ///
- /// The string parameter to check;
- ///
- ///
- /// The error message text to include when the error is thrown.
- ///
- if (typeof parameter != "string") {
- throw new Error(functionName + " requires the " + parameterName + " parameter is a String.");
+ /**
+ * Sets the configuration parameters for DynamicsWebApi helper.
+ *
+ * @param {DWAConfig} config - configuration object
+ */
+ this.setConfig = function (config) {
+
+ if (config.webApiVersion) {
+ ErrorHelper.stringParameterCheck(config.webApiVersion, "DynamicsWebApi.setConfig", "config.webApiVersion");
+ _internalConfig.webApiVersion = config.webApiVersion;
}
- };
- var _arrayParameterCheck = function (parameter, functionName, parameterName) {
- ///
- /// Private function used to check whether required parameters are null or undefined
- ///
- ///
- /// The string parameter to check;
- ///
- ///
- /// The error message text to include when the error is thrown.
- ///
- if (parameter.constructor !== Array) {
- throw new Error(functionName + " requires the " + parameterName + " parameter is an Array.");
+
+ if (config.webApiUrl) {
+ ErrorHelper.stringParameterCheck(config.webApiUrl, "DynamicsWebApi.setConfig", "config.webApiUrl");
+ _internalConfig.webApiUrl = config.webApiUrl;
+ } else {
+ _internalConfig.webApiUrl = _initUrl();
}
- };
- var _numberParameterCheck = function (parameter, functionName, parameterName) {
- ///
- /// Private function used to check whether required parameters are null or undefined
- ///
- ///
- /// The string parameter to check;
- ///
- ///
- /// The error message text to include when the error is thrown.
- ///
- if (typeof parameter != "number") {
- throw new Error(functionName + " requires the " + parameterName + " parameter is a Number.");
+
+ if (config.impersonate) {
+ _internalConfig.impersonate = ErrorHelper.guidParameterCheck(config.impersonate, "DynamicsWebApi.setConfig", "config.impersonate");
}
- };
- var _boolParameterCheck = function (parameter, functionName, parameterName) {
- ///
- /// Private function used to check whether required parameters are null or undefined
- ///
- ///
- /// The string parameter to check;
- ///
- ///
- /// The error message text to include when the error is thrown.
- ///
- if (typeof parameter != "boolean") {
- throw new Error(functionName + " requires the " + parameterName + " parameter is a Boolean.");
+
+ if (config.onTokenRefresh) {
+ ErrorHelper.callbackParameterCheck(config.onTokenRefresh, "DynamicsWebApi.setConfig", "config.onTokenRefresh");
+ _internalConfig.onTokenRefresh = config.onTokenRefresh;
}
};
- var _guidParameterCheck = function (parameter, functionName, parameterName) {
- ///
- /// Private function used to check whether required parameter is a valid GUID
- ///
- ///
- /// The GUID parameter to check;
- ///
- ///
- /// The error message text to include when the error is thrown.
- ///
- ///
-
- try {
- var match = /[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(parameter)[0];
+ this.setConfig(config);
- return match;
- }
- catch (error) {
- throw new Error(functionName + " requires the " + parameterName + " parameter is a GUID String.");
+ var _propertyReplacer = function (key, value) {
+ /// Description
+ if (key.endsWith("@odata.bind") && typeof value === "string" && !value.startsWith(_internalConfig.webApiUrl)) {
+ value = _internalConfig.webApiUrl + value;
}
- }
- var _callbackParameterCheck = function (callbackParameter, functionName, parameterName) {
- ///
- /// Private function used to check whether required callback parameters are functions
- ///
- ///
- /// The callback parameter to check;
- ///
- ///
- /// The error message text to include when the error is thrown.
- ///
- if (typeof callbackParameter != "function") {
- throw new Error(functionName + " requires the " + parameterName + " parameter is a Function.");
- }
- }
+ return value;
+ };
/**
* Sends a request to given URL with given parameters
@@ -959,54 +946,11 @@ function DynamicsWebApi(config) {
* @param {Function} errorCallback - A callback called when a request failed.
* @param {Object} [data] - Data to send in the request.
* @param {Object} [additionalHeaders] - Object with additional headers. IMPORTANT! This object does not contain default headers needed for every request.
- * @returns {Promise}
- */
- var _sendRequest = function(method, uri, data, additionalHeaders, successCallback, errorCallback) {
- if (_impersonateUserId && (!additionalHeaders || (additionalHeaders && !additionalHeaders["MSCRMCallerID"]))) {
- if (!additionalHeaders) {
- additionalHeaders = {};
- }
- additionalHeaders['MSCRMCallerID'] = _impersonateUserId;
- }
-
- var stringifiedData;
- if (data) {
- stringifiedData = JSON.stringify(data, _propertyReplacer);
- }
-
- var executeRequest;
- if (typeof XMLHttpRequest !== 'undefined') {
- executeRequest = __webpack_require__(3);
- }
-
- executeRequest(method, _webApiUrl + uri, stringifiedData, additionalHeaders, successCallback, errorCallback);
- }
-
- /**
- * Sets the configuration parameters for DynamicsWebApi helper.
- *
- * @param {DWAConfig} config - configuration object
*/
- this.setConfig = function (config) {
- if (config.webApiVersion != null) {
- _stringParameterCheck(config.webApiVersion, "DynamicsWebApi.setConfig", "config.webApiVersion");
- _webApiVersion = config.webApiVersion;
- _webApiUrl = _initUrl();
- }
-
- if (config.webApiUrl != null) {
- _stringParameterCheck(config.webApiUrl, "DynamicsWebApi.setConfig", "config.webApiUrl");
- _webApiUrl = config.webApiUrl;
- }
-
- if (config.impersonate != null) {
- _impersonateUserId = _guidParameterCheck(config.impersonate, "DynamicsWebApi.setConfig", "config.impersonate");
- }
+ var _sendRequest = function (method, uri, data, additionalHeaders, successCallback, errorCallback) {
+ __webpack_require__(3)(method, uri, _internalConfig, data, additionalHeaders, successCallback, errorCallback);
}
- if (config != null)
- this.setConfig(config);
-
/**
* Sends an asynchronous request to create a new record.
*
@@ -1018,15 +962,15 @@ function DynamicsWebApi(config) {
*/
this.create = function (object, collection, successCallback, errorCallback, prefer) {
- _parameterCheck(object, "DynamicsWebApi.create", "object");
- _stringParameterCheck(collection, "DynamicsWebApi.create", "collection");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.create", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.create", "errorCallback");
+ ErrorHelper.parameterCheck(object, "DynamicsWebApi.create", "object");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.create", "collection");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.create", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.create", "errorCallback");
var headers = null;
if (prefer != null) {
- _stringParameterCheck(prefer, "DynamicsWebApi.create", "prefer");
+ ErrorHelper.stringParameterCheck(prefer, "DynamicsWebApi.create", "prefer");
headers = { "Prefer": prefer };
}
@@ -1055,10 +999,10 @@ function DynamicsWebApi(config) {
*/
this.updateRequest = function (request, successCallback, errorCallback) {
- _parameterCheck(request, "DynamicsWebApi.update", "request");
- _parameterCheck(request.entity, "DynamicsWebApi.update", "request.entity");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.update", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.update", "errorCallback");
+ ErrorHelper.parameterCheck(request, "DynamicsWebApi.update", "request");
+ ErrorHelper.parameterCheck(request.entity, "DynamicsWebApi.update", "request.entity");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.update", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.update", "errorCallback");
var result = RequestConverter.convertRequest(request, "update");
@@ -1101,24 +1045,24 @@ function DynamicsWebApi(config) {
*/
this.update = function (id, collection, object, successCallback, errorCallback, prefer, select) {
- _stringParameterCheck(id, "DynamicsWebApi.update", "id");
- id = _guidParameterCheck(id, "DynamicsWebApi.update", "id")
- _parameterCheck(object, "DynamicsWebApi.update", "object");
- _stringParameterCheck(collection, "DynamicsWebApi.update", "collection");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.update", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.update", "errorCallback");
+ ErrorHelper.stringParameterCheck(id, "DynamicsWebApi.update", "id");
+ id = ErrorHelper.guidParameterCheck(id, "DynamicsWebApi.update", "id")
+ ErrorHelper.parameterCheck(object, "DynamicsWebApi.update", "object");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.update", "collection");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.update", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.update", "errorCallback");
var headers = { "If-Match": "*" }; //to prevent upsert
if (prefer != null) {
- _stringParameterCheck(prefer, "DynamicsWebApi.update", "prefer");
+ ErrorHelper.stringParameterCheck(prefer, "DynamicsWebApi.update", "prefer");
headers["Prefer"] = prefer;
}
var systemQueryOptions = "";
if (select != null) {
- _arrayParameterCheck(select, "DynamicsWebApi.update", "select");
+ ErrorHelper.arrayParameterCheck(select, "DynamicsWebApi.update", "select");
if (select != null && select.length > 0) {
systemQueryOptions = "?$select=" + select.join(",");
@@ -1146,17 +1090,17 @@ function DynamicsWebApi(config) {
*/
this.updateSingleProperty = function (id, collection, keyValuePair, successCallback, errorCallback, prefer) {
- _stringParameterCheck(id, "DynamicsWebApi.updateSingleProperty", "id");
- id = _guidParameterCheck(id, "DynamicsWebApi.updateSingleProperty", "id");
- _parameterCheck(keyValuePair, "DynamicsWebApi.updateSingleProperty", "keyValuePair");
- _stringParameterCheck(collection, "DynamicsWebApi.updateSingleProperty", "collection");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.updateSingleProperty", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.updateSingleProperty", "errorCallback");
+ ErrorHelper.stringParameterCheck(id, "DynamicsWebApi.updateSingleProperty", "id");
+ id = ErrorHelper.guidParameterCheck(id, "DynamicsWebApi.updateSingleProperty", "id");
+ ErrorHelper.parameterCheck(keyValuePair, "DynamicsWebApi.updateSingleProperty", "keyValuePair");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.updateSingleProperty", "collection");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.updateSingleProperty", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.updateSingleProperty", "errorCallback");
var headers = null;
if (prefer != null) {
- _stringParameterCheck(prefer, "DynamicsWebApi.updateSingleProperty", "prefer");
+ ErrorHelper.stringParameterCheck(prefer, "DynamicsWebApi.updateSingleProperty", "prefer");
headers = { "Prefer": prefer };
}
@@ -1181,9 +1125,9 @@ function DynamicsWebApi(config) {
*/
this.deleteRequest = function (request, successCallback, errorCallback) {
- _parameterCheck(request, "DynamicsWebApi.delete", "request")
- _callbackParameterCheck(successCallback, "DynamicsWebApi.delete", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.delete", "errorCallback");
+ ErrorHelper.parameterCheck(request, "DynamicsWebApi.delete", "request")
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.delete", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.delete", "errorCallback");
var result = RequestConverter.convertRequest(request, "delete");
@@ -1218,14 +1162,14 @@ function DynamicsWebApi(config) {
*/
this.deleteRecord = function (id, collection, successCallback, errorCallback, propertyName) {
- _stringParameterCheck(id, "DynamicsWebApi.delete", "id");
- id = _guidParameterCheck(id, "DynamicsWebApi.delete", "id");
- _stringParameterCheck(collection, "DynamicsWebApi.delete", "collection");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.delete", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.delete", "errorCallback");
+ ErrorHelper.stringParameterCheck(id, "DynamicsWebApi.delete", "id");
+ id = ErrorHelper.guidParameterCheck(id, "DynamicsWebApi.delete", "id");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.delete", "collection");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.delete", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.delete", "errorCallback");
if (propertyName != null)
- _stringParameterCheck(propertyName, "DynamicsWebApi.delete", "propertyName");
+ ErrorHelper.stringParameterCheck(propertyName, "DynamicsWebApi.delete", "propertyName");
var url = collection.toLowerCase() + "(" + id + ")";
@@ -1249,9 +1193,9 @@ function DynamicsWebApi(config) {
*/
this.retrieveRequest = function (request, successCallback, errorCallback) {
- _parameterCheck(request, "DynamicsWebApi.retrieve", "request")
- _callbackParameterCheck(successCallback, "DynamicsWebApi.retrieve", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.retrieve", "errorCallback");
+ ErrorHelper.parameterCheck(request, "DynamicsWebApi.retrieve", "request")
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.retrieve", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.retrieve", "errorCallback");
var result = RequestConverter.convertRequest(request, "retrieve");
@@ -1281,18 +1225,18 @@ function DynamicsWebApi(config) {
*/
this.retrieve = function (id, collection, successCallback, errorCallback, select, expand) {
- _stringParameterCheck(id, "DynamicsWebApi.retrieve", "id");
- id = _guidParameterCheck(id, "DynamicsWebApi.retrieve", "id")
- _stringParameterCheck(collection, "DynamicsWebApi.retrieve", "collection");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.retrieve", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.retrieve", "errorCallback");
+ ErrorHelper.stringParameterCheck(id, "DynamicsWebApi.retrieve", "id");
+ id = ErrorHelper.guidParameterCheck(id, "DynamicsWebApi.retrieve", "id")
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.retrieve", "collection");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.retrieve", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.retrieve", "errorCallback");
var url = collection.toLowerCase() + "(" + id + ")";
var queryOptions = [];
if (select != null && select.length) {
- _arrayParameterCheck(select, "DynamicsWebApi.retrieve", "select");
+ ErrorHelper.arrayParameterCheck(select, "DynamicsWebApi.retrieve", "select");
if (select.length == 1 && select[0].endsWith("/$ref") && select[0].endsWith("/$ref")) {
url += "/" + select[0];
@@ -1310,7 +1254,7 @@ function DynamicsWebApi(config) {
}
if (expand != null) {
- _stringParameterCheck(expand, "DynamicsWebApi.retrieve", "expand");
+ ErrorHelper.stringParameterCheck(expand, "DynamicsWebApi.retrieve", "expand");
queryOptions.push("$expand=" + expand);
}
@@ -1338,10 +1282,10 @@ function DynamicsWebApi(config) {
*/
this.upsertRequest = function (request, successCallback, errorCallback) {
- _parameterCheck(request, "DynamicsWebApi.upsert", "request");
- _parameterCheck(request.entity, "DynamicsWebApi.upsert", "request.entity");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.upsert", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.upsert", "errorCallback");
+ ErrorHelper.parameterCheck(request, "DynamicsWebApi.upsert", "request");
+ ErrorHelper.parameterCheck(request.entity, "DynamicsWebApi.upsert", "request.entity");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.upsert", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.upsert", "errorCallback");
var result = RequestConverter.convertRequest(request, "upsert");
@@ -1395,26 +1339,26 @@ function DynamicsWebApi(config) {
*/
this.upsert = function (id, collection, object, successCallback, errorCallback, prefer, select) {
- _stringParameterCheck(id, "DynamicsWebApi.upsert", "id");
- id = _guidParameterCheck(id, "DynamicsWebApi.upsert", "id")
+ ErrorHelper.stringParameterCheck(id, "DynamicsWebApi.upsert", "id");
+ id = ErrorHelper.guidParameterCheck(id, "DynamicsWebApi.upsert", "id")
- _parameterCheck(object, "DynamicsWebApi.upsert", "object");
- _stringParameterCheck(collection, "DynamicsWebApi.upsert", "collection");
+ ErrorHelper.parameterCheck(object, "DynamicsWebApi.upsert", "object");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.upsert", "collection");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.upsert", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.upsert", "errorCallback");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.upsert", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.upsert", "errorCallback");
var headers = {};
if (prefer != null) {
- _stringParameterCheck(prefer, "DynamicsWebApi.upsert", "prefer");
+ ErrorHelper.stringParameterCheck(prefer, "DynamicsWebApi.upsert", "prefer");
headers["Prefer"] = prefer;
}
var systemQueryOptions = "";
if (select != null) {
- _arrayParameterCheck(select, "DynamicsWebApi.upsert", "select");
+ ErrorHelper.arrayParameterCheck(select, "DynamicsWebApi.upsert", "select");
if (select != null && select.length > 0) {
systemQueryOptions = "?$select=" + select.join(",");
@@ -1451,9 +1395,9 @@ function DynamicsWebApi(config) {
this.count = function (collection, successCallback, errorCallback, filter) {
if (filter == null || (filter != null && !filter.length)) {
- _stringParameterCheck(collection, "DynamicsWebApi.count", "collection");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.count", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.count", "errorCallback");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.count", "collection");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.count", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.count", "errorCallback");
//if filter has not been specified then simplify the request
@@ -1503,8 +1447,8 @@ function DynamicsWebApi(config) {
*/
this.retrieveMultipleRequest = function (request, successCallback, errorCallback, nextPageLink) {
- _callbackParameterCheck(successCallback, "DynamicsWebApi.retrieveMultiple", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.retrieveMultiple", "errorCallback");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.retrieveMultiple", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.retrieveMultiple", "errorCallback");
if (nextPageLink && !request.collection) {
request.collection = "any";
@@ -1513,8 +1457,8 @@ function DynamicsWebApi(config) {
var result = RequestConverter.convertRequest(request, "retrieveMultiple");
if (nextPageLink) {
- _stringParameterCheck(nextPageLink, "DynamicsWebApi.retrieveMultiple", "nextPageLink");
- result.url = nextPageLink.replace(_webApiUrl, "");
+ ErrorHelper.stringParameterCheck(nextPageLink, "DynamicsWebApi.retrieveMultiple", "nextPageLink");
+ result.url = nextPageLink.replace(_internalConfig.webApiUrl, "");
}
//copy locally
@@ -1553,20 +1497,20 @@ function DynamicsWebApi(config) {
*/
this.executeFetchXml = function (collection, fetchXml, successCallback, errorCallback, includeAnnotations, pageNumber, pagingCookie, impersonateUserId) {
- _stringParameterCheck(collection, "DynamicsWebApi.executeFetchXml", "collection");
- _stringParameterCheck(fetchXml, "DynamicsWebApi.executeFetchXml", "fetchXml");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.executeFetchXml", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.executeFetchXml", "errorCallback");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.executeFetchXml", "collection");
+ ErrorHelper.stringParameterCheck(fetchXml, "DynamicsWebApi.executeFetchXml", "fetchXml");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.executeFetchXml", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.executeFetchXml", "errorCallback");
if (pageNumber == null) {
pageNumber = 1;
}
- _numberParameterCheck(pageNumber, "DynamicsWebApi.executeFetchXml", "pageNumber");
+ ErrorHelper.numberParameterCheck(pageNumber, "DynamicsWebApi.executeFetchXml", "pageNumber");
var replacementString = "$1 page='" + pageNumber + "'";
if (pagingCookie != null) {
- _stringParameterCheck(pagingCookie, "DynamicsWebApi.executeFetchXml", "pagingCookie");
+ ErrorHelper.stringParameterCheck(pagingCookie, "DynamicsWebApi.executeFetchXml", "pagingCookie");
replacementString += " paging-cookie='" + pagingCookie + "'";
}
@@ -1575,12 +1519,12 @@ function DynamicsWebApi(config) {
var headers = {};
if (includeAnnotations != null) {
- _stringParameterCheck(includeAnnotations, "DynamicsWebApi.executeFetchXml", "includeAnnotations");
+ ErrorHelper.stringParameterCheck(includeAnnotations, "DynamicsWebApi.executeFetchXml", "includeAnnotations");
headers['Prefer'] = 'odata.include-annotations="' + includeAnnotations + '"';
}
if (impersonateUserId != null) {
- impersonateUserId = _guidParameterCheck(impersonateUserId, "DynamicsWebApi.executeFetchXml", "impersonateUserId");
+ impersonateUserId = ErrorHelper.guidParameterCheck(impersonateUserId, "DynamicsWebApi.executeFetchXml", "impersonateUserId");
header["MSCRMCallerID"] = impersonateUserId;
}
@@ -1615,13 +1559,13 @@ function DynamicsWebApi(config) {
*/
this.associate = function (primarycollection, primaryId, relationshipName, relatedcollection, relatedId, successCallback, errorCallback, impersonateUserId) {
- _stringParameterCheck(primarycollection, "DynamicsWebApi.associate", "primarycollection");
- _stringParameterCheck(relatedcollection, "DynamicsWebApi.associate", "relatedcollection");
- _stringParameterCheck(relationshipName, "DynamicsWebApi.associate", "relationshipName");
- primaryId = _guidParameterCheck(primaryId, "DynamicsWebApi.associate", "primaryId");
- relatedId = _guidParameterCheck(relatedId, "DynamicsWebApi.associate", "relatedId");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.associate", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.associate", "errorCallback");
+ ErrorHelper.stringParameterCheck(primarycollection, "DynamicsWebApi.associate", "primarycollection");
+ ErrorHelper.stringParameterCheck(relatedcollection, "DynamicsWebApi.associate", "relatedcollection");
+ ErrorHelper.stringParameterCheck(relationshipName, "DynamicsWebApi.associate", "relationshipName");
+ primaryId = ErrorHelper.guidParameterCheck(primaryId, "DynamicsWebApi.associate", "primaryId");
+ relatedId = ErrorHelper.guidParameterCheck(relatedId, "DynamicsWebApi.associate", "relatedId");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.associate", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.associate", "errorCallback");
var onSuccess = function () {
successCallback();
@@ -1630,11 +1574,11 @@ function DynamicsWebApi(config) {
var header = {};
if (impersonateUserId != null) {
- impersonateUserId = _guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
+ impersonateUserId = ErrorHelper.guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
header["MSCRMCallerID"] = impersonateUserId;
}
- var object = { "@odata.id": _webApiUrl + relatedcollection + "(" + relatedId + ")" };
+ var object = { "@odata.id": _internalConfig.webApiUrl + relatedcollection + "(" + relatedId + ")" };
_sendRequest("POST",
primarycollection + "(" + primaryId + ")/" + relationshipName + "/$ref", object, header,
@@ -1654,12 +1598,12 @@ function DynamicsWebApi(config) {
*/
this.disassociate = function (primarycollection, primaryId, relationshipName, relatedId, successCallback, errorCallback, impersonateUserId) {
- _stringParameterCheck(primarycollection, "DynamicsWebApi.disassociate", "primarycollection");
- _stringParameterCheck(relationshipName, "DynamicsWebApi.disassociate", "relationshipName");
- primaryId = _guidParameterCheck(primaryId, "DynamicsWebApi.disassociate", "primaryId");
- relatedId = _guidParameterCheck(relatedId, "DynamicsWebApi.disassociate", "relatedId");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.disassociate", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.disassociate", "errorCallback");
+ ErrorHelper.stringParameterCheck(primarycollection, "DynamicsWebApi.disassociate", "primarycollection");
+ ErrorHelper.stringParameterCheck(relationshipName, "DynamicsWebApi.disassociate", "relationshipName");
+ primaryId = ErrorHelper.guidParameterCheck(primaryId, "DynamicsWebApi.disassociate", "primaryId");
+ relatedId = ErrorHelper.guidParameterCheck(relatedId, "DynamicsWebApi.disassociate", "relatedId");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.disassociate", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.disassociate", "errorCallback");
var onSuccess = function () {
successCallback();
@@ -1668,7 +1612,7 @@ function DynamicsWebApi(config) {
var header = {};
if (impersonateUserId != null) {
- impersonateUserId = _guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
+ impersonateUserId = ErrorHelper.guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
header["MSCRMCallerID"] = impersonateUserId;
}
@@ -1690,13 +1634,13 @@ function DynamicsWebApi(config) {
*/
this.associateSingleValued = function (collection, id, singleValuedNavigationPropertyName, relatedcollection, relatedId, successCallback, errorCallback, impersonateUserId) {
- _stringParameterCheck(collection, "DynamicsWebApi.associateSingleValued", "collection");
- id = _guidParameterCheck(id, "DynamicsWebApi.associateSingleValued", "id");
- relatedId = _guidParameterCheck(relatedId, "DynamicsWebApi.associateSingleValued", "relatedId");
- _stringParameterCheck(singleValuedNavigationPropertyName, "DynamicsWebApi.associateSingleValued", "singleValuedNavigationPropertyName");
- _stringParameterCheck(relatedcollection, "DynamicsWebApi.associateSingleValued", "relatedcollection");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.associateSingleValued", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.associateSingleValued", "errorCallback");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.associateSingleValued", "collection");
+ id = ErrorHelper.guidParameterCheck(id, "DynamicsWebApi.associateSingleValued", "id");
+ relatedId = ErrorHelper.guidParameterCheck(relatedId, "DynamicsWebApi.associateSingleValued", "relatedId");
+ ErrorHelper.stringParameterCheck(singleValuedNavigationPropertyName, "DynamicsWebApi.associateSingleValued", "singleValuedNavigationPropertyName");
+ ErrorHelper.stringParameterCheck(relatedcollection, "DynamicsWebApi.associateSingleValued", "relatedcollection");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.associateSingleValued", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.associateSingleValued", "errorCallback");
var onSuccess = function () {
successCallback();
@@ -1705,11 +1649,11 @@ function DynamicsWebApi(config) {
var header = {};
if (impersonateUserId != null) {
- impersonateUserId = _guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
+ impersonateUserId = ErrorHelper.guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
header["MSCRMCallerID"] = impersonateUserId;
}
- var object = { "@odata.id": _webApiUrl + relatedcollection + "(" + relatedId + ")" };
+ var object = { "@odata.id": _internalConfig.webApiUrl + relatedcollection + "(" + relatedId + ")" };
_sendRequest("PUT",
collection + "(" + id + ")/" + singleValuedNavigationPropertyName + "/$ref", object, header,
@@ -1728,16 +1672,16 @@ function DynamicsWebApi(config) {
*/
this.disassociateSingleValued = function (collection, id, singleValuedNavigationPropertyName, successCallback, errorCallback, impersonateUserId) {
- _stringParameterCheck(collection, "DynamicsWebApi.disassociateSingleValued", "collection");
- id = _guidParameterCheck(id, "DynamicsWebApi.disassociateSingleValued", "id");
- _stringParameterCheck(singleValuedNavigationPropertyName, "DynamicsWebApi.disassociateSingleValued", "singleValuedNavigationPropertyName");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.disassociateSingleValued", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.disassociateSingleValued", "errorCallback");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.disassociateSingleValued", "collection");
+ id = ErrorHelper.guidParameterCheck(id, "DynamicsWebApi.disassociateSingleValued", "id");
+ ErrorHelper.stringParameterCheck(singleValuedNavigationPropertyName, "DynamicsWebApi.disassociateSingleValued", "singleValuedNavigationPropertyName");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.disassociateSingleValued", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.disassociateSingleValued", "errorCallback");
var header = {};
if (impersonateUserId != null) {
- impersonateUserId = _guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
+ impersonateUserId = ErrorHelper.guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
header["MSCRMCallerID"] = impersonateUserId;
}
@@ -1790,14 +1734,14 @@ function DynamicsWebApi(config) {
*/
var _executeFunction = function (functionName, parameters, collection, id, successCallback, errorCallback, impersonateUserId) {
- _stringParameterCheck(functionName, "DynamicsWebApi.executeFunction", "functionName");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.executeFunction", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.executeFunction", "errorCallback");
+ ErrorHelper.stringParameterCheck(functionName, "DynamicsWebApi.executeFunction", "functionName");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.executeFunction", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.executeFunction", "errorCallback");
var url = functionName + Utility.buildFunctionParameters(parameters);
if (collection != null) {
- _stringParameterCheck(collection, "DynamicsWebApi.executeFunction", "collection");
- id = _guidParameterCheck(id, "DynamicsWebApi.executeFunction", "id");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.executeFunction", "collection");
+ id = ErrorHelper.guidParameterCheck(id, "DynamicsWebApi.executeFunction", "id");
url = collection + "(" + id + ")/" + url;
}
@@ -1805,7 +1749,7 @@ function DynamicsWebApi(config) {
var header = {};
if (impersonateUserId != null) {
- header["MSCRMCallerID"] = _guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
+ header["MSCRMCallerID"] = ErrorHelper.guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
}
var onSuccess = function (response) {
@@ -1859,14 +1803,14 @@ function DynamicsWebApi(config) {
*/
var _executeAction = function (actionName, requestObject, collection, id, successCallback, errorCallback, impersonateUserId) {
- _stringParameterCheck(actionName, "DynamicsWebApi.executeAction", "actionName");
- _callbackParameterCheck(successCallback, "DynamicsWebApi.executeAction", "successCallback");
- _callbackParameterCheck(errorCallback, "DynamicsWebApi.executeAction", "errorCallback");
+ ErrorHelper.stringParameterCheck(actionName, "DynamicsWebApi.executeAction", "actionName");
+ ErrorHelper.callbackParameterCheck(successCallback, "DynamicsWebApi.executeAction", "successCallback");
+ ErrorHelper.callbackParameterCheck(errorCallback, "DynamicsWebApi.executeAction", "errorCallback");
var url = actionName;
if (collection != null) {
- _stringParameterCheck(collection, "DynamicsWebApi.executeAction", "collection");
- id = _guidParameterCheck(id, "DynamicsWebApi.executeAction", "id");
+ ErrorHelper.stringParameterCheck(collection, "DynamicsWebApi.executeAction", "collection");
+ id = ErrorHelper.guidParameterCheck(id, "DynamicsWebApi.executeAction", "id");
url = collection + "(" + id + ")/" + url;
}
@@ -1874,7 +1818,7 @@ function DynamicsWebApi(config) {
var header = {};
if (impersonateUserId != null) {
- impersonateUserId = _guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
+ impersonateUserId = ErrorHelper.guidParameterCheck(impersonateUserId, "DynamicsWebApi.associate", "impersonateUserId");
header["MSCRMCallerID"] = impersonateUserId;
}
@@ -1896,11 +1840,7 @@ function DynamicsWebApi(config) {
this.initializeInstance = function (config) {
if (!config) {
- config = {
- impersonate: _impersonateUserId,
- webApiUrl: _webApiUrl,
- webApiVersion: _webApiVersion
- };
+ config = _internalConfig;
}
return new DynamicsWebApi(config);
diff --git a/dist/dynamics-web-api-callbacks.min.js b/dist/dynamics-web-api-callbacks.min.js
index c147070..46a5f12 100644
--- a/dist/dynamics-web-api-callbacks.min.js
+++ b/dist/dynamics-web-api-callbacks.min.js
@@ -1,2 +1,2 @@
-/*! dynamics-web-api-callbacks v1.1.4 (c) 2017 Aleksandr Rogov */
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.DynamicsWebApi=t():e.DynamicsWebApi=t()}(this,function(){return function(e){function t(i){if(a[i])return a[i].exports;var n=a[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var a={};return t.m=e,t.c=a,t.i=function(e){return e},t.d=function(e,a,i){t.o(e,a)||Object.defineProperty(e,a,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var a=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(a,"a",a),a},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=11)}([function(e,t){var a={Types:{ResponseBase:function(){this.oDataContext=""},Response:function(){a.Types.ResponseBase.call(this),this.value={}},ReferenceResponse:function(){a.Types.ResponseBase.call(this),this.id="",this.collection=""},MultipleResponse:function(){a.Types.ResponseBase.call(this),this.oDataNextLink="",this.oDataCount=0,this.value=[]},FetchXmlResponse:function(){a.Types.ResponseBase.call(this),this.value=[],this.PagingInfo={cookie:"",page:0,nextPage:1}}},Prefer:{ReturnRepresentation:"return=representation",Annotations:{AssociatedNavigationProperty:"Microsoft.Dynamics.CRM.associatednavigationproperty",LookupLogicalName:"Microsoft.Dynamics.CRM.lookuplogicalname",All:"*",FormattedValue:"OData.Community.Display.V1.FormattedValue",FetchXmlPagingCookie:"Microsoft.Dynamics.CRM.fetchxmlpagingcookie"}}};e.exports=a},function(e,t){function a(e,t,a){throw new Error(a?e+" requires the "+t+" parameter is a "+a:e+" requires the "+t+" parameter.")}var i={errorHandler:function(e){return new Error("Error : "+e.status+": "+e.message)},parameterCheck:function(e,t,i,n){void 0!==e&&null!==e&&""!=e||a(t,i,n)},stringParameterCheck:function(e,t,i){"string"!=typeof e&&a(t,i,"String")},arrayParameterCheck:function(e,t,i){e.constructor!==Array&&a(t,i,"Array")},numberParameterCheck:function(e,t,i){"number"!=typeof e&&a(t,i,"Number")},boolParameterCheck:function(e,t,i){"boolean"!=typeof e&&a(t,i,"Boolean")},guidParameterCheck:function(e,t,i){try{return/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(e)[0]}catch(e){a(t,i,"GUID String")}},callbackParameterCheck:function(e,t,i){"function"!=typeof e&&a(t,i,"Function")}};e.exports=i},function(e,t){String.prototype.endsWith=function(e,t){var a=this.toString();("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>a.length)&&(t=a.length),t-=e.length;var i=a.lastIndexOf(e,t);return i!==-1&&i===t},String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}},function(e,t,a){var i=a(6),n=a(7),r=function(e,t,a,r,s,c){var o=new XMLHttpRequest;if(o.open(e,encodeURI(t),!0),o.setRequestHeader("OData-MaxVersion","4.0"),o.setRequestHeader("OData-Version","4.0"),o.setRequestHeader("Accept","application/json"),o.setRequestHeader("Content-Type","application/json; charset=utf-8"),null!=r)for(var l in r)o.setRequestHeader(l,r[l]);o.onreadystatechange=function(){if(4===o.readyState){switch(o.status){case 200:case 201:case 204:case 304:var e=null;o.responseText&&(e=JSON.parse(o.responseText,i));s({data:e,headers:n(o.getAllResponseHeaders()),status:o.status});break;default:var t;try{t=JSON.parse(o.response).error}catch(e){t=new Error("Unexpected Error")}t.status=o.status,c(t)}o=null}},o.onerror=function(){c({message:"Network Error"}),o=null},o.ontimeout=function(e){c({message:"Request Timed Out"}),o=null},a?o.send(a):o.send()};e.exports=r},function(e,t,a){function i(e,t,a,n){var c={},o=[];if(n=null!=n?n:"&",e){if(e.navigationProperty&&(s.stringParameterCheck(e.navigationProperty,"DynamicsWebApi."+t,"request.navigationProperty"),a+="/"+e.navigationProperty),null!=e.select&&e.select.length&&(s.arrayParameterCheck(e.select,"DynamicsWebApi."+t,"request.select"),"retrieve"==t&&1==e.select.length&&e.select[0].endsWith("/$ref")?a+="/"+e.select[0]:(e.select[0].startsWith("/")&&"retrieve"==t&&(null==e.navigationProperty?a+=e.select.shift():e.select.shift()),e.select.length&&o.push("$select="+e.select.join(",")))),e.filter&&(s.stringParameterCheck(e.filter,"DynamicsWebApi."+t,"request.filter"),o.push("$filter="+e.filter)),e.savedQuery&&o.push("savedQuery="+s.guidParameterCheck(e.savedQuery,"DynamicsWebApi."+t,"request.savedQuery")),e.userQuery&&o.push("userQuery="+s.guidParameterCheck(e.userQuery,"DynamicsWebApi."+t,"request.userQuery")),e.maxPageSize&&e.maxPageSize>0&&(s.numberParameterCheck(e.maxPageSize,"DynamicsWebApi."+t,"request.maxPageSize"),c.Prefer="odata.maxpagesize="+e.maxPageSize),e.count&&(s.boolParameterCheck(e.count,"DynamicsWebApi."+t,"request.count"),o.push("$count="+e.count)),e.top&&e.top>0&&(s.numberParameterCheck(e.top,"DynamicsWebApi."+t,"request.top"),o.push("$top="+e.top)),null!=e.orderBy&&e.orderBy.length&&(s.arrayParameterCheck(e.orderBy,"DynamicsWebApi."+t,"request.orderBy"),o.push("$orderby="+e.orderBy.join(","))),e.returnRepresentation&&(s.boolParameterCheck(e.returnRepresentation,"DynamicsWebApi."+t,"request.returnRepresentation"),c.Prefer=r.Prefer.ReturnRepresentation),e.includeAnnotations&&(s.stringParameterCheck(e.includeAnnotations,"DynamicsWebApi."+t,"request.includeAnnotations"),c.Prefer='odata.include-annotations="'+e.includeAnnotations+'"'),null!=e.ifmatch&&null!=e.ifnonematch)throw Error("DynamicsWebApi."+t+". Either one of request.ifmatch or request.ifnonematch parameters shoud be used in a call, not both.");if(e.ifmatch&&(s.stringParameterCheck(e.ifmatch,"DynamicsWebApi."+t,"request.ifmatch"),c["If-Match"]=e.ifmatch),e.ifnonematch&&(s.stringParameterCheck(e.ifnonematch,"DynamicsWebApi."+t,"request.ifnonematch"),c["If-None-Match"]=e.ifnonematch),e.impersonate&&(s.stringParameterCheck(e.impersonate,"DynamicsWebApi."+t,"request.impersonate"),c.MSCRMCallerID=s.guidParameterCheck(e.impersonate,"DynamicsWebApi."+t,"request.impersonate")),null!=e.expand&&e.expand.length){s.arrayParameterCheck(e.expand,"DynamicsWebApi."+t,"request.expand");for(var l=[],u=0;u0&&(t[r.substring(0,s)]=r.substring(s+2))}return t}},function(e,t){e.exports=function(e){if(e){for(var t=Object.keys(e),a="",i="",n=1;n<=t.length;n++){var r=t[n-1],s=e[r];n>1&&(a+=",",i+="&"),a+=r+"=@p"+n,i+="@p"+n+"="+("string"==typeof s?"'"+s+"'":s)}return"("+a+")?"+i}return"()"}},function(e,t){e.exports=function(e){var t=/\/(\w+)\(([0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12})/i.exec(e["@odata.id"]);return{id:t[2],collection:t[1],oDataContext:e["@odata.context"]}}},function(e,t){e.exports=function(e,t){e=e?e:"",t=t?t:1,e=unescape(unescape(e));var a=/pagingcookie="()/.exec(e);if(null!=a){var i=parseInt(a[2]);return{cookie:a[1].replace(//g,">").replace(/\"/g,"'").replace(/\'/g,"""),page:i,nextPage:i+1}}return{cookie:"",page:t,nextPage:t+1}}},function(e,t,a){function i(e){var t=function(){var e=Xrm.Page.context.getClientUrl();return e.match(/\/$/)&&(e=e.substring(0,e.length-1)),e},s=null,c="8.0",o=function(){return t()+"/api/data/v"+c+"/"},l=o(),u=function(e,t){return e.endsWith("@odata.bind")&&"string"==typeof t&&!t.startsWith(l)&&(t=l+t),t},p=function(e,t,a,i){if(void 0===e||null===e||""==e)throw new Error(i?t+" requires the "+a+" parameter with type: "+i:t+" requires the "+a+" parameter.")},d=function(e,t,a){if("string"!=typeof e)throw new Error(t+" requires the "+a+" parameter is a String.")},m=function(e,t,a){if(e.constructor!==Array)throw new Error(t+" requires the "+a+" parameter is an Array.")},y=function(e,t,a){if("number"!=typeof e)throw new Error(t+" requires the "+a+" parameter is a Number.")},f=function(e,t,a){try{return/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(e)[0]}catch(e){throw new Error(t+" requires the "+a+" parameter is a GUID String.")}},b=function(e,t,a){if("function"!=typeof e)throw new Error(t+" requires the "+a+" parameter is a Function.")},h=function(e,t,i,n,r,c){s&&(!n||n&&!n.MSCRMCallerID)&&(n||(n={}),n.MSCRMCallerID=s);var o;i&&(o=JSON.stringify(i,u));var p;"undefined"!=typeof XMLHttpRequest&&(p=a(3)),p(e,l+t,o,n,r,c)};this.setConfig=function(e){null!=e.webApiVersion&&(d(e.webApiVersion,"DynamicsWebApi.setConfig","config.webApiVersion"),c=e.webApiVersion,l=o()),null!=e.webApiUrl&&(d(e.webApiUrl,"DynamicsWebApi.setConfig","config.webApiUrl"),l=e.webApiUrl),null!=e.impersonate&&(s=f(e.impersonate,"DynamicsWebApi.setConfig","config.impersonate"))},null!=e&&this.setConfig(e),this.create=function(e,t,a,i,n){p(e,"DynamicsWebApi.create","object"),d(t,"DynamicsWebApi.create","collection"),b(a,"DynamicsWebApi.create","successCallback"),b(i,"DynamicsWebApi.create","errorCallback");var r=null;null!=n&&(d(n,"DynamicsWebApi.create","prefer"),r={Prefer:n});var s=function(e){if(e.data)a(e.data);else{var t=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];a(/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(t)[0])}};h("POST",t.toLowerCase(),e,r,s,i)},this.updateRequest=function(e,t,a){p(e,"DynamicsWebApi.update","request"),p(e.entity,"DynamicsWebApi.update","request.entity"),b(t,"DynamicsWebApi.update","successCallback"),b(a,"DynamicsWebApi.update","errorCallback");var i=r.convertRequest(e,"update");null==e.ifmatch&&(i.headers["If-Match"]="*");var n=function(e){t(e.data?e.data:!0)},s=e.ifmatch,c=function(e){s&&412==e.status?t(!1):a(e)};h("PATCH",i.url,e.entity,i.headers,n,c)},this.update=function(e,t,a,i,n,r,s){d(e,"DynamicsWebApi.update","id"),e=f(e,"DynamicsWebApi.update","id"),p(a,"DynamicsWebApi.update","object"),d(t,"DynamicsWebApi.update","collection"),b(i,"DynamicsWebApi.update","successCallback"),b(n,"DynamicsWebApi.update","errorCallback");var c={"If-Match":"*"};null!=r&&(d(r,"DynamicsWebApi.update","prefer"),c.Prefer=r);var o="";null!=s&&(m(s,"DynamicsWebApi.update","select"),null!=s&&s.length>0&&(o="?$select="+s.join(",")));var l=function(e){e.data?i(e.data):i()};h("PATCH",t.toLowerCase()+"("+e+")"+o,a,c,l,n)},this.updateSingleProperty=function(e,t,a,i,n,r){d(e,"DynamicsWebApi.updateSingleProperty","id"),e=f(e,"DynamicsWebApi.updateSingleProperty","id"),p(a,"DynamicsWebApi.updateSingleProperty","keyValuePair"),d(t,"DynamicsWebApi.updateSingleProperty","collection"),b(i,"DynamicsWebApi.updateSingleProperty","successCallback"),b(n,"DynamicsWebApi.updateSingleProperty","errorCallback");var s=null;null!=r&&(d(r,"DynamicsWebApi.updateSingleProperty","prefer"),s={Prefer:r});var c=function(e){e.data?i(e.data):i()},o=Object.keys(a)[0],l=a[o];h("PUT",t.toLowerCase()+"("+e+")/"+o,{value:l},s,c,n)},this.deleteRequest=function(e,t,a){p(e,"DynamicsWebApi.delete","request"),b(t,"DynamicsWebApi.delete","successCallback"),b(a,"DynamicsWebApi.delete","errorCallback");var i=r.convertRequest(e,"delete"),n=function(){t(!0)},s=e.ifmatch,c=function(e){s&&412==e.status?t(!1):a(e)};h("DELETE",i.url,null,i.headers,n,c)},this.deleteRecord=function(e,t,a,i,n){d(e,"DynamicsWebApi.delete","id"),e=f(e,"DynamicsWebApi.delete","id"),d(t,"DynamicsWebApi.delete","collection"),b(a,"DynamicsWebApi.delete","successCallback"),b(i,"DynamicsWebApi.delete","errorCallback"),null!=n&&d(n,"DynamicsWebApi.delete","propertyName");var r=t.toLowerCase()+"("+e+")";null!=n&&(r+="/"+n),h("DELETE",r,null,null,function(e){a()},i)},this.retrieveRequest=function(e,t,a){p(e,"DynamicsWebApi.retrieve","request"),b(t,"DynamicsWebApi.retrieve","successCallback"),b(a,"DynamicsWebApi.retrieve","errorCallback");var i=r.convertRequest(e,"retrieve"),s=e.select,c=function(e){t(null!=s&&1==s.length&&s[0].endsWith("/$ref")&&null!=e.data["@odata.id"]?n.convertToReferenceObject(e.data):e.data)};h("GET",i.url,null,i.headers,c,a)},this.retrieve=function(e,t,a,i,r,s){d(e,"DynamicsWebApi.retrieve","id"),e=f(e,"DynamicsWebApi.retrieve","id"),d(t,"DynamicsWebApi.retrieve","collection"),b(a,"DynamicsWebApi.retrieve","successCallback"),b(i,"DynamicsWebApi.retrieve","errorCallback");var c=t.toLowerCase()+"("+e+")",o=[];null!=r&&r.length&&(m(r,"DynamicsWebApi.retrieve","select"),1==r.length&&r[0].endsWith("/$ref")&&r[0].endsWith("/$ref")?c+="/"+r[0]:(r[0].startsWith("/")&&(c+=r.shift()),r.length&&o.push("$select="+r.join(",")))),null!=s&&(d(s,"DynamicsWebApi.retrieve","expand"),o.push("$expand="+s)),o.length&&(c+="?"+o.join("&")),h("GET",c,null,null,function(e){a(null!=r&&1==r.length&&r[0].endsWith("/$ref")&&null!=e.data["@odata.id"]?n.convertToReferenceObject(e.data):e.data)},i)},this.upsertRequest=function(e,t,a){p(e,"DynamicsWebApi.upsert","request"),p(e.entity,"DynamicsWebApi.upsert","request.entity"),b(t,"DynamicsWebApi.upsert","successCallback"),b(a,"DynamicsWebApi.upsert","errorCallback");var i=r.convertRequest(e,"upsert"),n=e.ifnonematch,s=e.ifmatch,c=function(e){if(e.headers["OData-EntityId"]||e.headers["odata-entityid"]){var a=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];t(/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(a)[0])}else e.data?t(e.data):t()},o=function(e){n&&412==e.status?t():s&&404==e.status?t():a(e)};h("PATCH",i.url,e.entity,i.headers,c,o)},this.upsert=function(e,t,a,i,n,r,s){d(e,"DynamicsWebApi.upsert","id"),e=f(e,"DynamicsWebApi.upsert","id"),p(a,"DynamicsWebApi.upsert","object"),d(t,"DynamicsWebApi.upsert","collection"),b(i,"DynamicsWebApi.upsert","successCallback"),b(n,"DynamicsWebApi.upsert","errorCallback");var c={};null!=r&&(d(r,"DynamicsWebApi.upsert","prefer"),c.Prefer=r);var o="";null!=s&&(m(s,"DynamicsWebApi.upsert","select"),null!=s&&s.length>0&&(o="?$select="+s.join(",")));var l=function(e){if(e.headers["OData-EntityId"]||e.headers["odata-entityid"]){var t=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];i(/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(t)[0])}else e.data?i(e.data):i()};h("PATCH",t.toLowerCase()+"("+e+")"+o,a,c,l,n)},this.count=function(e,t,a,i){if(null!=i&&(null==i||i.length))return this.retrieveMultipleRequest({collection:e,filter:i,count:!0},function(e){t(e.oDataCount?e.oDataCount:0)},a);d(e,"DynamicsWebApi.count","collection"),b(t,"DynamicsWebApi.count","successCallback"),b(a,"DynamicsWebApi.count","errorCallback");var n=function(e){t(e.data?parseInt(e.data):0)};h("GET",e.toLowerCase()+"/$count",null,null,n,a)},this.retrieveMultiple=function(e,t,a,i,n,r){return this.retrieveMultipleRequest({collection:e,select:i,filter:n},t,a,r)},this.retrieveMultipleRequest=function(e,t,a,i){b(t,"DynamicsWebApi.retrieveMultiple","successCallback"),b(a,"DynamicsWebApi.retrieveMultiple","errorCallback"),i&&!e.collection&&(e.collection="any");var n=r.convertRequest(e,"retrieveMultiple");i&&(d(i,"DynamicsWebApi.retrieveMultiple","nextPageLink"),n.url=i.replace(l,""));var s=e.count,c=function(e){null!=e.data["@odata.nextLink"]&&(e.data.oDataNextLink=e.data["@odata.nextLink"]),s&&(e.data.oDataCount=null!=e.data["@odata.count"]?parseInt(e.data["@odata.count"]):0),null!=e.data["@odata.context"]&&(e.data.oDataContext=e.data["@odata.context"]),t(e.data)};h("GET",n.url,null,n.headers,c,a)},this.executeFetchXml=function(e,t,a,i,r,s,c,o){d(e,"DynamicsWebApi.executeFetchXml","collection"),d(t,"DynamicsWebApi.executeFetchXml","fetchXml"),b(a,"DynamicsWebApi.executeFetchXml","successCallback"),b(i,"DynamicsWebApi.executeFetchXml","errorCallback"),null==s&&(s=1),y(s,"DynamicsWebApi.executeFetchXml","pageNumber");var l="$1 page='"+s+"'";null!=c&&(d(c,"DynamicsWebApi.executeFetchXml","pagingCookie"),l+=" paging-cookie='"+c+"'"),t=t.replace(/^(t.length)&&(a=t.length),a-=e.length;var r=t.lastIndexOf(e,a);return r!==-1&&r===a},String.prototype.startsWith=function(e,a){return a=a||0,this.substr(a,e.length)===e}},function(e,a,t){e.exports=function(e,a,r,i,n,c,s){r.impersonate&&(!n||n&&!n.MSCRMCallerID)&&(n||(n={}),n.MSCRMCallerID=r.impersonate);var o;i&&(o=JSON.stringify(i,function(e,a){return e.endsWith("@odata.bind")&&"string"==typeof a&&!a.startsWith(r.webApiUrl)&&(a=r.webApiUrl+a),a}));var l;"undefined"!=typeof XMLHttpRequest&&(l=t(8));var u=function(t){t&&(n||(n={}),n.Authorization="Bearer: "+t),l(e,r.webApiUrl+a,o,n,c,s)};r.onTokenRefresh&&(!n||n&&!n.Authorization)?r.onTokenRefresh(u):u()}},function(e,a,t){function r(e,a,t,i){var s={},o=[];if(i=null!=i?i:"&",e){if(e.navigationProperty&&(c.stringParameterCheck(e.navigationProperty,"DynamicsWebApi."+a,"request.navigationProperty"),t+="/"+e.navigationProperty),null!=e.select&&e.select.length&&(c.arrayParameterCheck(e.select,"DynamicsWebApi."+a,"request.select"),"retrieve"==a&&1==e.select.length&&e.select[0].endsWith("/$ref")?t+="/"+e.select[0]:(e.select[0].startsWith("/")&&"retrieve"==a&&(null==e.navigationProperty?t+=e.select.shift():e.select.shift()),e.select.length&&o.push("$select="+e.select.join(",")))),e.filter&&(c.stringParameterCheck(e.filter,"DynamicsWebApi."+a,"request.filter"),o.push("$filter="+e.filter)),e.savedQuery&&o.push("savedQuery="+c.guidParameterCheck(e.savedQuery,"DynamicsWebApi."+a,"request.savedQuery")),e.userQuery&&o.push("userQuery="+c.guidParameterCheck(e.userQuery,"DynamicsWebApi."+a,"request.userQuery")),e.maxPageSize&&e.maxPageSize>0&&(c.numberParameterCheck(e.maxPageSize,"DynamicsWebApi."+a,"request.maxPageSize"),s.Prefer="odata.maxpagesize="+e.maxPageSize),e.count&&(c.boolParameterCheck(e.count,"DynamicsWebApi."+a,"request.count"),o.push("$count="+e.count)),e.top&&e.top>0&&(c.numberParameterCheck(e.top,"DynamicsWebApi."+a,"request.top"),o.push("$top="+e.top)),null!=e.orderBy&&e.orderBy.length&&(c.arrayParameterCheck(e.orderBy,"DynamicsWebApi."+a,"request.orderBy"),o.push("$orderby="+e.orderBy.join(","))),e.returnRepresentation&&(c.boolParameterCheck(e.returnRepresentation,"DynamicsWebApi."+a,"request.returnRepresentation"),s.Prefer=n.Prefer.ReturnRepresentation),e.includeAnnotations&&(c.stringParameterCheck(e.includeAnnotations,"DynamicsWebApi."+a,"request.includeAnnotations"),s.Prefer='odata.include-annotations="'+e.includeAnnotations+'"'),null!=e.ifmatch&&null!=e.ifnonematch)throw Error("DynamicsWebApi."+a+". Either one of request.ifmatch or request.ifnonematch parameters shoud be used in a call, not both.");if(e.ifmatch&&(c.stringParameterCheck(e.ifmatch,"DynamicsWebApi."+a,"request.ifmatch"),s["If-Match"]=e.ifmatch),e.ifnonematch&&(c.stringParameterCheck(e.ifnonematch,"DynamicsWebApi."+a,"request.ifnonematch"),s["If-None-Match"]=e.ifnonematch),e.impersonate&&(c.stringParameterCheck(e.impersonate,"DynamicsWebApi."+a,"request.impersonate"),s.MSCRMCallerID=c.guidParameterCheck(e.impersonate,"DynamicsWebApi."+a,"request.impersonate")),e.token&&(c.stringParameterCheck(e.token,"DynamicsWebApi."+a,"request.token"),s.Authorization="Bearer: "+e.token),null!=e.expand&&e.expand.length){c.arrayParameterCheck(e.expand,"DynamicsWebApi."+a,"request.expand");for(var l=[],u=0;u0&&(a[n.substring(0,c)]=n.substring(c+2))}return a}},function(e,a,t){var r=t(6),i=t(7),n=function(e,a,t,n,c,s){var o=new XMLHttpRequest;if(o.open(e,encodeURI(a),!0),o.setRequestHeader("OData-MaxVersion","4.0"),o.setRequestHeader("OData-Version","4.0"),o.setRequestHeader("Accept","application/json"),o.setRequestHeader("Content-Type","application/json; charset=utf-8"),null!=n)for(var l in n)o.setRequestHeader(l,n[l]);o.onreadystatechange=function(){if(4===o.readyState){switch(o.status){case 200:case 201:case 204:case 304:var e=null;o.responseText&&(e=JSON.parse(o.responseText,r));c({data:e,headers:i(o.getAllResponseHeaders()),status:o.status});break;default:var a;try{a=JSON.parse(o.response).error}catch(e){a=new Error("Unexpected Error")}a.status=o.status,s(a)}o=null}},o.onerror=function(){s({message:"Network Error"}),o=null},o.ontimeout=function(e){s({message:"Request Timed Out"}),o=null},t?o.send(t):o.send()};e.exports=n},function(e,a){e.exports=function(e){if(e){for(var a=Object.keys(e),t="",r="",i=1;i<=a.length;i++){var n=a[i-1],c=e[n];i>1&&(t+=",",r+="&"),t+=n+"=@p"+i,r+="@p"+i+"="+("string"==typeof c?"'"+c+"'":c)}return"("+t+")?"+r}return"()"}},function(e,a){e.exports=function(e){var a=/\/(\w+)\(([0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12})/i.exec(e["@odata.id"]);return{id:a[2],collection:a[1],oDataContext:e["@odata.context"]}}},function(e,a){e.exports=function(e,a){e=e?e:"",a=a?a:1,e=unescape(unescape(e));var t=/pagingcookie="()/.exec(e);if(null!=t){var r=parseInt(t[2]);return{cookie:t[1].replace(//g,">").replace(/\"/g,"'").replace(/\'/g,"""),page:r,nextPage:r+1}}return{cookie:"",page:a,nextPage:a+1}}},function(e,a,t){function r(e){var a={webApiVersion:"8.0",webApiUrl:"",impersonate:null};e||(e=a);var s=function(){if("undefined"!=typeof GetGlobalContext)return GetGlobalContext();if("undefined"!=typeof Xrm)return Xrm.Page.context;throw new Error("Xrm Context is not available.")},o=function(){var e=s();if(e){var a=e.getClientUrl();return a.match(/\/$/)&&(a=a.substring(0,a.length-1)),a}return""},l=function(){return o()+"/api/data/v"+a.webApiVersion+"/"};this.setConfig=function(e){e.webApiVersion&&(c.stringParameterCheck(e.webApiVersion,"DynamicsWebApi.setConfig","config.webApiVersion"),a.webApiVersion=e.webApiVersion),e.webApiUrl?(c.stringParameterCheck(e.webApiUrl,"DynamicsWebApi.setConfig","config.webApiUrl"),a.webApiUrl=e.webApiUrl):a.webApiUrl=l(),e.impersonate&&(a.impersonate=c.guidParameterCheck(e.impersonate,"DynamicsWebApi.setConfig","config.impersonate")),e.onTokenRefresh&&(c.callbackParameterCheck(e.onTokenRefresh,"DynamicsWebApi.setConfig","config.onTokenRefresh"),a.onTokenRefresh=e.onTokenRefresh)},this.setConfig(e);var u=function(e,r,i,n,c,s){t(3)(e,r,a,i,n,c,s)};this.create=function(e,a,t,r,i){c.parameterCheck(e,"DynamicsWebApi.create","object"),c.stringParameterCheck(a,"DynamicsWebApi.create","collection"),c.callbackParameterCheck(t,"DynamicsWebApi.create","successCallback"),c.callbackParameterCheck(r,"DynamicsWebApi.create","errorCallback");var n=null;null!=i&&(c.stringParameterCheck(i,"DynamicsWebApi.create","prefer"),n={Prefer:i});var s=function(e){if(e.data)t(e.data);else{var a=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];t(/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(a)[0])}};u("POST",a.toLowerCase(),e,n,s,r)},this.updateRequest=function(e,a,t){c.parameterCheck(e,"DynamicsWebApi.update","request"),c.parameterCheck(e.entity,"DynamicsWebApi.update","request.entity"),c.callbackParameterCheck(a,"DynamicsWebApi.update","successCallback"),c.callbackParameterCheck(t,"DynamicsWebApi.update","errorCallback");var r=n.convertRequest(e,"update");null==e.ifmatch&&(r.headers["If-Match"]="*");var i=function(e){a(e.data?e.data:!0)},s=e.ifmatch,o=function(e){s&&412==e.status?a(!1):t(e)};u("PATCH",r.url,e.entity,r.headers,i,o)},this.update=function(e,a,t,r,i,n,s){c.stringParameterCheck(e,"DynamicsWebApi.update","id"),e=c.guidParameterCheck(e,"DynamicsWebApi.update","id"),c.parameterCheck(t,"DynamicsWebApi.update","object"),c.stringParameterCheck(a,"DynamicsWebApi.update","collection"),c.callbackParameterCheck(r,"DynamicsWebApi.update","successCallback"),c.callbackParameterCheck(i,"DynamicsWebApi.update","errorCallback");var o={"If-Match":"*"};null!=n&&(c.stringParameterCheck(n,"DynamicsWebApi.update","prefer"),o.Prefer=n);var l="";null!=s&&(c.arrayParameterCheck(s,"DynamicsWebApi.update","select"),null!=s&&s.length>0&&(l="?$select="+s.join(",")));var p=function(e){e.data?r(e.data):r()};u("PATCH",a.toLowerCase()+"("+e+")"+l,t,o,p,i)},this.updateSingleProperty=function(e,a,t,r,i,n){c.stringParameterCheck(e,"DynamicsWebApi.updateSingleProperty","id"),e=c.guidParameterCheck(e,"DynamicsWebApi.updateSingleProperty","id"),c.parameterCheck(t,"DynamicsWebApi.updateSingleProperty","keyValuePair"),c.stringParameterCheck(a,"DynamicsWebApi.updateSingleProperty","collection"),c.callbackParameterCheck(r,"DynamicsWebApi.updateSingleProperty","successCallback"),c.callbackParameterCheck(i,"DynamicsWebApi.updateSingleProperty","errorCallback");var s=null;null!=n&&(c.stringParameterCheck(n,"DynamicsWebApi.updateSingleProperty","prefer"),s={Prefer:n});var o=function(e){e.data?r(e.data):r()},l=Object.keys(t)[0],p=t[l];u("PUT",a.toLowerCase()+"("+e+")/"+l,{value:p},s,o,i)},this.deleteRequest=function(e,a,t){c.parameterCheck(e,"DynamicsWebApi.delete","request"),c.callbackParameterCheck(a,"DynamicsWebApi.delete","successCallback"),c.callbackParameterCheck(t,"DynamicsWebApi.delete","errorCallback");var r=n.convertRequest(e,"delete"),i=function(){a(!0)},s=e.ifmatch,o=function(e){s&&412==e.status?a(!1):t(e)};u("DELETE",r.url,null,r.headers,i,o)},this.deleteRecord=function(e,a,t,r,i){c.stringParameterCheck(e,"DynamicsWebApi.delete","id"),e=c.guidParameterCheck(e,"DynamicsWebApi.delete","id"),c.stringParameterCheck(a,"DynamicsWebApi.delete","collection"),c.callbackParameterCheck(t,"DynamicsWebApi.delete","successCallback"),c.callbackParameterCheck(r,"DynamicsWebApi.delete","errorCallback"),null!=i&&c.stringParameterCheck(i,"DynamicsWebApi.delete","propertyName");var n=a.toLowerCase()+"("+e+")";null!=i&&(n+="/"+i),u("DELETE",n,null,null,function(e){t()},r)},this.retrieveRequest=function(e,a,t){c.parameterCheck(e,"DynamicsWebApi.retrieve","request"),c.callbackParameterCheck(a,"DynamicsWebApi.retrieve","successCallback"),c.callbackParameterCheck(t,"DynamicsWebApi.retrieve","errorCallback");var r=n.convertRequest(e,"retrieve"),s=e.select,o=function(e){a(null!=s&&1==s.length&&s[0].endsWith("/$ref")&&null!=e.data["@odata.id"]?i.convertToReferenceObject(e.data):e.data)};u("GET",r.url,null,r.headers,o,t)},this.retrieve=function(e,a,t,r,n,s){c.stringParameterCheck(e,"DynamicsWebApi.retrieve","id"),e=c.guidParameterCheck(e,"DynamicsWebApi.retrieve","id"),c.stringParameterCheck(a,"DynamicsWebApi.retrieve","collection"),c.callbackParameterCheck(t,"DynamicsWebApi.retrieve","successCallback"),c.callbackParameterCheck(r,"DynamicsWebApi.retrieve","errorCallback");var o=a.toLowerCase()+"("+e+")",l=[];null!=n&&n.length&&(c.arrayParameterCheck(n,"DynamicsWebApi.retrieve","select"),1==n.length&&n[0].endsWith("/$ref")&&n[0].endsWith("/$ref")?o+="/"+n[0]:(n[0].startsWith("/")&&(o+=n.shift()),n.length&&l.push("$select="+n.join(",")))),null!=s&&(c.stringParameterCheck(s,"DynamicsWebApi.retrieve","expand"),l.push("$expand="+s)),l.length&&(o+="?"+l.join("&")),u("GET",o,null,null,function(e){t(null!=n&&1==n.length&&n[0].endsWith("/$ref")&&null!=e.data["@odata.id"]?i.convertToReferenceObject(e.data):e.data)},r)},this.upsertRequest=function(e,a,t){c.parameterCheck(e,"DynamicsWebApi.upsert","request"),c.parameterCheck(e.entity,"DynamicsWebApi.upsert","request.entity"),c.callbackParameterCheck(a,"DynamicsWebApi.upsert","successCallback"),c.callbackParameterCheck(t,"DynamicsWebApi.upsert","errorCallback");var r=n.convertRequest(e,"upsert"),i=e.ifnonematch,s=e.ifmatch,o=function(e){if(e.headers["OData-EntityId"]||e.headers["odata-entityid"]){var t=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];a(/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(t)[0])}else e.data?a(e.data):a()},l=function(e){i&&412==e.status?a():s&&404==e.status?a():t(e)};u("PATCH",r.url,e.entity,r.headers,o,l)},this.upsert=function(e,a,t,r,i,n,s){c.stringParameterCheck(e,"DynamicsWebApi.upsert","id"),e=c.guidParameterCheck(e,"DynamicsWebApi.upsert","id"),c.parameterCheck(t,"DynamicsWebApi.upsert","object"),c.stringParameterCheck(a,"DynamicsWebApi.upsert","collection"),c.callbackParameterCheck(r,"DynamicsWebApi.upsert","successCallback"),c.callbackParameterCheck(i,"DynamicsWebApi.upsert","errorCallback");var o={};null!=n&&(c.stringParameterCheck(n,"DynamicsWebApi.upsert","prefer"),o.Prefer=n);var l="";null!=s&&(c.arrayParameterCheck(s,"DynamicsWebApi.upsert","select"),null!=s&&s.length>0&&(l="?$select="+s.join(",")));var p=function(e){if(e.headers["OData-EntityId"]||e.headers["odata-entityid"]){var a=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];r(/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(a)[0])}else e.data?r(e.data):r()};u("PATCH",a.toLowerCase()+"("+e+")"+l,t,o,p,i)},this.count=function(e,a,t,r){if(null!=r&&(null==r||r.length))return this.retrieveMultipleRequest({collection:e,filter:r,count:!0},function(e){a(e.oDataCount?e.oDataCount:0)},t);c.stringParameterCheck(e,"DynamicsWebApi.count","collection"),c.callbackParameterCheck(a,"DynamicsWebApi.count","successCallback"),c.callbackParameterCheck(t,"DynamicsWebApi.count","errorCallback");var i=function(e){a(e.data?parseInt(e.data):0)};u("GET",e.toLowerCase()+"/$count",null,null,i,t)},this.retrieveMultiple=function(e,a,t,r,i,n){return this.retrieveMultipleRequest({collection:e,select:r,filter:i},a,t,n)},this.retrieveMultipleRequest=function(e,t,r,i){c.callbackParameterCheck(t,"DynamicsWebApi.retrieveMultiple","successCallback"),c.callbackParameterCheck(r,"DynamicsWebApi.retrieveMultiple","errorCallback"),i&&!e.collection&&(e.collection="any");var s=n.convertRequest(e,"retrieveMultiple");i&&(c.stringParameterCheck(i,"DynamicsWebApi.retrieveMultiple","nextPageLink"),s.url=i.replace(a.webApiUrl,""));var o=e.count,l=function(e){null!=e.data["@odata.nextLink"]&&(e.data.oDataNextLink=e.data["@odata.nextLink"]),o&&(e.data.oDataCount=null!=e.data["@odata.count"]?parseInt(e.data["@odata.count"]):0),null!=e.data["@odata.context"]&&(e.data.oDataContext=e.data["@odata.context"]),t(e.data)};u("GET",s.url,null,s.headers,l,r)},this.executeFetchXml=function(e,a,t,r,n,s,o,l){c.stringParameterCheck(e,"DynamicsWebApi.executeFetchXml","collection"),c.stringParameterCheck(a,"DynamicsWebApi.executeFetchXml","fetchXml"),c.callbackParameterCheck(t,"DynamicsWebApi.executeFetchXml","successCallback"),c.callbackParameterCheck(r,"DynamicsWebApi.executeFetchXml","errorCallback"),null==s&&(s=1),c.numberParameterCheck(s,"DynamicsWebApi.executeFetchXml","pageNumber");var p="$1 page='"+s+"'";null!=o&&(c.stringParameterCheck(o,"DynamicsWebApi.executeFetchXml","pagingCookie"),p+=" paging-cookie='"+o+"'"),a=a.replace(/^(
/// Private function return an Error object to the errorCallback
///
@@ -165,7 +165,7 @@ var ErrorHelper = {
/// The XMLHttpRequest response that returned an error.
///
///Error
- return new Error("Error : " +
+ throw new Error("Error: " +
req.status + ": " +
req.message);
},
@@ -226,6 +226,11 @@ var ErrorHelper = {
/// The error message text to include when the error is thrown.
///
if (typeof parameter != "number") {
+ if (typeof parameter === "string" && parameter) {
+ if (!isNaN(parseInt(parameter))) {
+ return;
+ }
+ }
throwParameterError(functionName, parameterName, "Number");
}
},
@@ -309,9 +314,6 @@ String.prototype.startsWith = function (searchString, position) {
/***/ (function(module, exports, __webpack_require__) {
-var dateReviver = __webpack_require__(6);
-var parseResponseHeaders = __webpack_require__(7);
-
/**
* Sends a request to given URL with given parameters
*
@@ -319,78 +321,57 @@ var parseResponseHeaders = __webpack_require__(7);
* @param {string} uri - Request URI.
* @param {Function} successCallback - A callback called on success of the request.
* @param {Function} errorCallback - A callback called when a request failed.
- * @param {string} [data] - Data to send in the request.
- * @param {Object} [additionalHeaders] - Object with headers. IMPORTANT! This object does not contain default headers needed for every request.
+ * @param {Object} config - DynamicsWebApi config.
+ * @param {Object} [data] - Data to send in the request.
+ * @param {Object} [additionalHeaders] - Object with additional headers. IMPORTANT! This object does not contain default headers needed for every request.
+ * @returns {Promise}
*/
-var xhrRequest = function (method, uri, data, additionalHeaders, successCallback, errorCallback) {
- var request = new XMLHttpRequest();
- request.open(method, encodeURI(uri), true);
- request.setRequestHeader("OData-MaxVersion", "4.0");
- request.setRequestHeader("OData-Version", "4.0");
- request.setRequestHeader("Accept", "application/json");
- request.setRequestHeader("Content-Type", "application/json; charset=utf-8");
-
- //set additional headers
- if (additionalHeaders != null) {
- for (var key in additionalHeaders) {
- request.setRequestHeader(key, additionalHeaders[key]);
+module.exports = function sendRequest(method, uri, config, data, additionalHeaders, successCallback, errorCallback) {
+ if (config.impersonate && (!additionalHeaders || (additionalHeaders && !additionalHeaders["MSCRMCallerID"]))) {
+ if (!additionalHeaders) {
+ additionalHeaders = {};
}
+ additionalHeaders['MSCRMCallerID'] = config.impersonate;
}
- request.onreadystatechange = function () {
- if (request.readyState === 4) {
- switch (request.status) {
- case 200: // Success with content returned in response body.
- case 201: // Success with content returned in response body.
- case 204: // Success with no content returned in response body.
- case 304: {// Success with Not Modified
- var responseData = null;
- if (request.responseText) {
- responseData = JSON.parse(request.responseText, dateReviver);
- }
+ var stringifiedData;
+ if (data) {
+ stringifiedData = JSON.stringify(data, function (key, value) {
+ /// Description
+ if (key.endsWith("@odata.bind") && typeof value === "string" && !value.startsWith(config.webApiUrl)) {
+ value = config.webApiUrl + value;
+ }
- var response = {
- data: responseData,
- headers: parseResponseHeaders(request.getAllResponseHeaders()),
- status: request.status
- };
+ return value;
+ });
+ }
- successCallback(response);
- break;
- }
- default: // All other statuses are error cases.
- var error;
- try {
- error = JSON.parse(request.response).error;
- } catch (e) {
- error = new Error("Unexpected Error");
- }
- error.status = request.status;
- errorCallback(error);
- break;
- }
+ var executeRequest;
+ if (typeof XMLHttpRequest !== 'undefined') {
+ executeRequest = __webpack_require__(8);
+ }
- request = null;
- }
- };
- request.onerror = function () {
- errorCallback({ message: "Network Error" });
- request = null;
- };
+ var sendInternalRequest = function (token) {
+ if (token) {
+ if (!additionalHeaders) {
+ additionalHeaders = {};
+ }
+ additionalHeaders['Authorization'] = "Bearer: " + token;
+ }
- request.ontimeout = function (error) {
- errorCallback({ message: "Request Timed Out" });
- request = null;
+ executeRequest(method, config.webApiUrl + uri, stringifiedData, additionalHeaders, successCallback, errorCallback);
};
- data
- ? request.send(data)
- : request.send();
+ //call a token refresh callback only if it is set and there is no "Authorization" header set yet
+ if (config.onTokenRefresh && (!additionalHeaders || (additionalHeaders && !additionalHeaders["Authorization"]))) {
+ config.onTokenRefresh(sendInternalRequest);
+ }
+ else {
+ sendInternalRequest();
+ }
};
-module.exports = xhrRequest;
-
/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {
@@ -516,6 +497,11 @@ function convertRequestOptions (request, functionName, url, joinSymbol) {
headers['MSCRMCallerID'] = ErrorHelper.guidParameterCheck(request.impersonate, "DynamicsWebApi." + functionName, "request.impersonate");
}
+ if (request.token) {
+ ErrorHelper.stringParameterCheck(request.token, "DynamicsWebApi." + functionName, "request.token");
+ headers["Authorization"] = "Bearer: " + request.token;
+ }
+
if (request.expand != null && request.expand.length) {
ErrorHelper.arrayParameterCheck(request.expand, "DynamicsWebApi." + functionName, "request.expand");
var expandRequestArray = [];
@@ -587,7 +573,7 @@ var Utility = {
* @param {Object} [parameters] - Function's input parameters. Example: { param1: "test", param2: 3 }.
* @returns {string}
*/
- buildFunctionParameters: __webpack_require__(8),
+ buildFunctionParameters: __webpack_require__(9),
/**
* Parses a paging cookie returned in response
@@ -596,7 +582,7 @@ var Utility = {
* @param {number} currentPageNumber - A current page number. Fix empty paging-cookie for complex fetch xmls.
* @returns {{cookie: "", number: 0, next: 1}}
*/
- getFetchXmlPagingCookie: __webpack_require__(10),
+ getFetchXmlPagingCookie: __webpack_require__(11),
/**
* Converts a response to a reference object
@@ -604,7 +590,7 @@ var Utility = {
* @param {Object} responseData - Response object
* @returns {ReferenceObject}
*/
- convertToReferenceObject: __webpack_require__(9)
+ convertToReferenceObject: __webpack_require__(10)
}
module.exports = Utility;
@@ -655,6 +641,93 @@ module.exports = function parseResponseHeaders(headerStr) {
/***/ }),
/* 8 */
+/***/ (function(module, exports, __webpack_require__) {
+
+
+var dateReviver = __webpack_require__(6);
+var parseResponseHeaders = __webpack_require__(7);
+
+/**
+ * Sends a request to given URL with given parameters
+ *
+ * @param {string} method - Method of the request.
+ * @param {string} uri - Request URI.
+ * @param {Function} successCallback - A callback called on success of the request.
+ * @param {Function} errorCallback - A callback called when a request failed.
+ * @param {string} [data] - Data to send in the request.
+ * @param {Object} [additionalHeaders] - Object with headers. IMPORTANT! This object does not contain default headers needed for every request.
+ */
+var xhrRequest = function (method, uri, data, additionalHeaders, successCallback, errorCallback) {
+ var request = new XMLHttpRequest();
+ request.open(method, encodeURI(uri), true);
+ request.setRequestHeader("OData-MaxVersion", "4.0");
+ request.setRequestHeader("OData-Version", "4.0");
+ request.setRequestHeader("Accept", "application/json");
+ request.setRequestHeader("Content-Type", "application/json; charset=utf-8");
+
+ //set additional headers
+ if (additionalHeaders != null) {
+ for (var key in additionalHeaders) {
+ request.setRequestHeader(key, additionalHeaders[key]);
+ }
+ }
+
+ request.onreadystatechange = function () {
+ if (request.readyState === 4) {
+ switch (request.status) {
+ case 200: // Success with content returned in response body.
+ case 201: // Success with content returned in response body.
+ case 204: // Success with no content returned in response body.
+ case 304: {// Success with Not Modified
+ var responseData = null;
+ if (request.responseText) {
+ responseData = JSON.parse(request.responseText, dateReviver);
+ }
+
+ var response = {
+ data: responseData,
+ headers: parseResponseHeaders(request.getAllResponseHeaders()),
+ status: request.status
+ };
+
+ successCallback(response);
+ break;
+ }
+ default: // All other statuses are error cases.
+ var error;
+ try {
+ error = JSON.parse(request.response).error;
+ } catch (e) {
+ error = new Error("Unexpected Error");
+ }
+ error.status = request.status;
+ errorCallback(error);
+ break;
+ }
+
+ request = null;
+ }
+ };
+
+ request.onerror = function () {
+ errorCallback({ message: "Network Error" });
+ request = null;
+ };
+
+ request.ontimeout = function (error) {
+ errorCallback({ message: "Request Timed Out" });
+ request = null;
+ };
+
+ data
+ ? request.send(data)
+ : request.send();
+};
+
+module.exports = xhrRequest;
+
+/***/ }),
+/* 9 */
/***/ (function(module, exports) {
/**
@@ -690,7 +763,7 @@ module.exports = function buildFunctionParameters(parameters) {
};
/***/ }),
-/* 9 */
+/* 10 */
/***/ (function(module, exports) {
/**
@@ -712,7 +785,7 @@ module.exports = function convertToReferenceObject(responseData) {
}
/***/ }),
-/* 10 */
+/* 11 */
/***/ (function(module, exports) {
/**
@@ -749,7 +822,7 @@ module.exports = function getFetchXmlPagingCookie(pageCookies, currentPageNumber
}
/***/ }),
-/* 11 */
+/* 12 */
/***/ (function(module, exports, __webpack_require__) {
var DWA = __webpack_require__(0);
@@ -767,9 +840,10 @@ if (!String.prototype.endsWith || !String.prototype.startsWith) {
/**
* Configuration object for DynamicsWebApi
* @typedef {object} DWAConfig
- * @property {string} webApiUrl - A String representing the GUID value for the Dynamics 365 system user id. Impersonates the user.
+ * @property {string} webApiUrl - A String representing a URL to Web API (webApiVersion not required if webApiUrl specified) [not used inside of CRM]
* @property {string} webApiVersion - The version of Web API to use, for example: "8.1"
- * @property {string} impersonate - A String representing a URL to Web API (webApiVersion not required if webApiUrl specified) [not used inside of CRM]
+ * @property {string} impersonate - A String representing the GUID value for the Dynamics 365 system user id. Impersonates the user.
+ * @property {Function} onTokenRefresh - A function that is called when a security token needs to be refreshed.
*/
/**
@@ -779,51 +853,86 @@ if (!String.prototype.endsWith || !String.prototype.startsWith) {
*/
function DynamicsWebApi(config) {
+ var _internalConfig = {
+ webApiVersion: "8.0",
+ webApiUrl: null,
+ impersonate: null,
+ onTokenRefresh: null
+ };
+
+ if (!config) {
+ config = _internalConfig;
+ }
+
var _context = function () {
- ///
- /// Private function to the context object.
- ///
- ///Context
- if (typeof GetGlobalContext != "undefined")
- { return GetGlobalContext(); }
+
+ if (typeof GetGlobalContext != "undefined") {
+ return GetGlobalContext();
+ }
else {
if (typeof Xrm != "undefined") {
return Xrm.Page.context;
}
- else { throw new Error("Xrm Context is not available."); }
+ else {
+ throw new Error("Xrm Context is not available.");
+ }
}
};
var _getClientUrl = function () {
- ///
- /// Private function to return the server URL from the context
- ///
- ///String
- if (typeof Xrm != "undefined") {
- var clientUrl = Xrm.Page.context.getClientUrl();
+ var context = _context();
+
+ if (context) {
+ var clientUrl = context.getClientUrl();
if (clientUrl.match(/\/$/)) {
clientUrl = clientUrl.substring(0, clientUrl.length - 1);
}
return clientUrl;
}
+
return "";
};
- var _webApiVersion = "8.0";
- var _impersonateUserId = null;
-
var _initUrl = function () {
- return _getClientUrl() + "/api/data/v" + _webApiVersion + "/";
+ return _getClientUrl() + "/api/data/v" + _internalConfig.webApiVersion + "/";
+ };
+
+ /**
+ * Sets the configuration parameters for DynamicsWebApi helper.
+ *
+ * @param {DWAConfig} config - configuration object
+ */
+ this.setConfig = function (config) {
+
+ if (config.webApiVersion) {
+ ErrorHelper.stringParameterCheck(config.webApiVersion, "DynamicsWebApi.setConfig", "config.webApiVersion");
+ _internalConfig.webApiVersion = config.webApiVersion;
+ }
+
+ if (config.webApiUrl) {
+ ErrorHelper.stringParameterCheck(config.webApiUrl, "DynamicsWebApi.setConfig", "config.webApiUrl");
+ _internalConfig.webApiUrl = config.webApiUrl;
+ } else {
+ _internalConfig.webApiUrl = _initUrl();
+ }
+
+ if (config.impersonate) {
+ _internalConfig.impersonate = ErrorHelper.guidParameterCheck(config.impersonate, "DynamicsWebApi.setConfig", "config.impersonate");
+ }
+
+ if (config.onTokenRefresh) {
+ ErrorHelper.callbackParameterCheck(config.onTokenRefresh, "DynamicsWebApi.setConfig", "config.onTokenRefresh");
+ _internalConfig.onTokenRefresh = config.onTokenRefresh;
+ }
};
- var _webApiUrl = _initUrl();
+ this.setConfig(config);
var _propertyReplacer = function (key, value) {
- /// Description
- if (typeof key === "string" && key.endsWith("@odata.bind") && typeof value === "string" && !value.startsWith(_webApiUrl)) {
- value = _webApiUrl + value;
+ if (typeof key === "string" && key.endsWith("@odata.bind") && typeof value === "string" && !value.startsWith(_internalConfig.webApiUrl)) {
+ value = _internalConfig.webApiUrl + value;
}
return value;
@@ -839,54 +948,11 @@ function DynamicsWebApi(config) {
* @returns {Promise}
*/
var _sendRequest = function (method, uri, data, additionalHeaders) {
- if (_impersonateUserId && (!additionalHeaders || (additionalHeaders && !additionalHeaders["MSCRMCallerID"]))) {
- if (!additionalHeaders) {
- additionalHeaders = {};
- }
- additionalHeaders['MSCRMCallerID'] = _impersonateUserId;
- }
-
- var stringifiedData;
- if (data) {
- stringifiedData = JSON.stringify(data, _propertyReplacer);
- }
-
- var executeRequest;
- if (typeof XMLHttpRequest !== 'undefined') {
- executeRequest = __webpack_require__(3);
- }
-
return new Promise(function (resolve, reject) {
- executeRequest(method, _webApiUrl + uri, stringifiedData, additionalHeaders, resolve, reject);
+ __webpack_require__(3)(method, uri, _internalConfig, data, additionalHeaders, resolve, reject);
});
};
- /**
- * Sets the configuration parameters for DynamicsWebApi helper.
- *
- * @param {DWAConfig} config - configuration object
- */
- this.setConfig = function (config) {
-
- if (config.webApiVersion) {
- ErrorHelper.stringParameterCheck(config.webApiVersion, "DynamicsWebApi.setConfig", "config.webApiVersion");
- _webApiVersion = config.webApiVersion;
- _webApiUrl = _initUrl();
- }
-
- if (config.webApiUrl) {
- ErrorHelper.stringParameterCheck(config.webApiUrl, "DynamicsWebApi.setConfig", "config.webApiUrl");
- _webApiUrl = config.webApiUrl;
- }
-
- if (config.impersonate) {
- _impersonateUserId = ErrorHelper.guidParameterCheck(config.impersonate, "DynamicsWebApi.setConfig", "config.impersonate");
- }
- }
-
- if (config != null)
- this.setConfig(config);
-
/**
* Sends an asynchronous request to create a new record.
*
@@ -928,19 +994,19 @@ function DynamicsWebApi(config) {
*/
this.retrieveRequest = function (request) {
//return Promise.resolve().then(function () {
- ErrorHelper.parameterCheck(request, "DynamicsWebApi.retrieve", "request");
+ ErrorHelper.parameterCheck(request, "DynamicsWebApi.retrieve", "request");
- var result = RequestConverter.convertRequest(request, "retrieve");
+ var result = RequestConverter.convertRequest(request, "retrieve");
- //copy locally
- var select = request.select;
- return _sendRequest("GET", result.url, null, result.headers).then(function (response) {
- if (select != null && select.length == 1 && select[0].endsWith("/$ref") && response.data["@odata.id"] != null) {
- return Utility.convertToReferenceObject(response.data);
- }
+ //copy locally
+ var select = request.select;
+ return _sendRequest("GET", result.url, null, result.headers).then(function (response) {
+ if (select != null && select.length == 1 && select[0].endsWith("/$ref") && response.data["@odata.id"] != null) {
+ return Utility.convertToReferenceObject(response.data);
+ }
- return response.data;
- });
+ return response.data;
+ });
//});
};
@@ -1276,7 +1342,7 @@ function DynamicsWebApi(config) {
if (nextPageLink) {
ErrorHelper.stringParameterCheck(nextPageLink, "DynamicsWebApi.retrieveMultiple", "nextPageLink");
- result.url = nextPageLink.replace(_webApiUrl, "");
+ result.url = nextPageLink.replace(_internalConfig.webApiUrl, "");
}
//copy locally
@@ -1309,39 +1375,39 @@ function DynamicsWebApi(config) {
* @param {string} [nextPageLink] - Use the value of the @odata.nextLink property with a new GET request to return the next page of data. Pass null to retrieveMultipleOptions.
* @returns {Promise}
*/
- var retrieveMultipleRequestAll = function (request) {
-
- if (nextPageLink && !request.collection) {
- request.collection = "any";
- }
-
- var result = RequestConverter.convertRequest(request, "retrieveMultiple");
-
- if (nextPageLink) {
- ErrorHelper.stringParameterCheck(nextPageLink, "DynamicsWebApi.retrieveMultiple", "nextPageLink");
- result.url = unescape(nextPageLink).replace(_webApiUrl, "");
- }
-
- //copy locally
- var toCount = request.count;
-
- return _sendRequest("GET", result.url, null, result.headers)
- .then(function (response) {
- if (response.data['@odata.nextLink'] != null) {
- response.data.oDataNextLink = response.data['@odata.nextLink'];
- }
- if (toCount) {
- response.data.oDataCount = response.data['@odata.count'] != null
- ? parseInt(response.data['@odata.count'])
- : 0;
- }
- if (response.data['@odata.context'] != null) {
- response.data.oDataContext = response.data['@odata.context'];
- }
-
- return response.data;
- });
- };
+ //var retrieveMultipleRequestAll = function (request) {
+
+ // if (nextPageLink && !request.collection) {
+ // request.collection = "any";
+ // }
+
+ // var result = RequestConverter.convertRequest(request, "retrieveMultiple");
+
+ // if (nextPageLink) {
+ // ErrorHelper.stringParameterCheck(nextPageLink, "DynamicsWebApi.retrieveMultiple", "nextPageLink");
+ // result.url = unescape(nextPageLink).replace(_internalConfig.webApiUrl, "");
+ // }
+
+ // //copy locally
+ // var toCount = request.count;
+
+ // return _sendRequest("GET", result.url, null, result.headers)
+ // .then(function (response) {
+ // if (response.data['@odata.nextLink'] != null) {
+ // response.data.oDataNextLink = response.data['@odata.nextLink'];
+ // }
+ // if (toCount) {
+ // response.data.oDataCount = response.data['@odata.count'] != null
+ // ? parseInt(response.data['@odata.count'])
+ // : 0;
+ // }
+ // if (response.data['@odata.context'] != null) {
+ // response.data.oDataContext = response.data['@odata.context'];
+ // }
+
+ // return response.data;
+ // });
+ //};
/**
* Sends an asynchronous request to count records. IMPORTANT! The count value does not represent the total number of entities in the system. It is limited by the maximum number of entities that can be returned. Returns: Number
@@ -1476,7 +1542,7 @@ function DynamicsWebApi(config) {
}
return _sendRequest("POST", primaryCollection + "(" + primaryId + ")/" + relationshipName + "/$ref",
- { "@odata.id": _webApiUrl + relatedCollection + "(" + relatedId + ")" }, header)
+ { "@odata.id": _internalConfig.webApiUrl + relatedCollection + "(" + relatedId + ")" }, header)
.then(function () { });
}
@@ -1534,7 +1600,7 @@ function DynamicsWebApi(config) {
}
return _sendRequest("PUT", collection + "(" + id + ")/" + singleValuedNavigationPropertyName + "/$ref",
- { "@odata.id": _webApiUrl + relatedCollection + "(" + relatedId + ")" }, header)
+ { "@odata.id": _internalConfig.webApiUrl + relatedCollection + "(" + relatedId + ")" }, header)
.then(function () { });
}
@@ -1694,13 +1760,8 @@ function DynamicsWebApi(config) {
* @returns {DynamicsWebApi}
*/
this.initializeInstance = function (config) {
-
if (!config) {
- config = {
- impersonate: _impersonateUserId,
- webApiUrl: _webApiUrl,
- webApiVersion: _webApiVersion
- };
+ config = _internalConfig;
}
return new DynamicsWebApi(config);
diff --git a/dist/dynamics-web-api.min.js b/dist/dynamics-web-api.min.js
index cd38dfd..49093ba 100644
--- a/dist/dynamics-web-api.min.js
+++ b/dist/dynamics-web-api.min.js
@@ -1,2 +1,2 @@
-/*! dynamics-web-api v1.1.4 (c) 2017 Aleksandr Rogov */
-!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.DynamicsWebApi=t():e.DynamicsWebApi=t()}(this,function(){return function(e){function t(a){if(r[a])return r[a].exports;var n=r[a]={i:a,l:!1,exports:{}};return e[a].call(n.exports,n,n.exports,t),n.l=!0,n.exports}var r={};return t.m=e,t.c=r,t.i=function(e){return e},t.d=function(e,r,a){t.o(e,r)||Object.defineProperty(e,r,{configurable:!1,enumerable:!0,get:a})},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=11)}([function(e,t){var r={Types:{ResponseBase:function(){this.oDataContext=""},Response:function(){r.Types.ResponseBase.call(this),this.value={}},ReferenceResponse:function(){r.Types.ResponseBase.call(this),this.id="",this.collection=""},MultipleResponse:function(){r.Types.ResponseBase.call(this),this.oDataNextLink="",this.oDataCount=0,this.value=[]},FetchXmlResponse:function(){r.Types.ResponseBase.call(this),this.value=[],this.PagingInfo={cookie:"",page:0,nextPage:1}}},Prefer:{ReturnRepresentation:"return=representation",Annotations:{AssociatedNavigationProperty:"Microsoft.Dynamics.CRM.associatednavigationproperty",LookupLogicalName:"Microsoft.Dynamics.CRM.lookuplogicalname",All:"*",FormattedValue:"OData.Community.Display.V1.FormattedValue",FetchXmlPagingCookie:"Microsoft.Dynamics.CRM.fetchxmlpagingcookie"}}};e.exports=r},function(e,t){function r(e,t,r){throw new Error(r?e+" requires the "+t+" parameter is a "+r:e+" requires the "+t+" parameter.")}var a={errorHandler:function(e){return new Error("Error : "+e.status+": "+e.message)},parameterCheck:function(e,t,a,n){void 0!==e&&null!==e&&""!=e||r(t,a,n)},stringParameterCheck:function(e,t,a){"string"!=typeof e&&r(t,a,"String")},arrayParameterCheck:function(e,t,a){e.constructor!==Array&&r(t,a,"Array")},numberParameterCheck:function(e,t,a){"number"!=typeof e&&r(t,a,"Number")},boolParameterCheck:function(e,t,a){"boolean"!=typeof e&&r(t,a,"Boolean")},guidParameterCheck:function(e,t,a){try{return/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(e)[0]}catch(e){r(t,a,"GUID String")}},callbackParameterCheck:function(e,t,a){"function"!=typeof e&&r(t,a,"Function")}};e.exports=a},function(e,t){String.prototype.endsWith=function(e,t){var r=this.toString();("number"!=typeof t||!isFinite(t)||Math.floor(t)!==t||t>r.length)&&(t=r.length),t-=e.length;var a=r.lastIndexOf(e,t);return a!==-1&&a===t},String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}},function(e,t,r){var a=r(6),n=r(7),i=function(e,t,r,i,c,s){var o=new XMLHttpRequest;if(o.open(e,encodeURI(t),!0),o.setRequestHeader("OData-MaxVersion","4.0"),o.setRequestHeader("OData-Version","4.0"),o.setRequestHeader("Accept","application/json"),o.setRequestHeader("Content-Type","application/json; charset=utf-8"),null!=i)for(var u in i)o.setRequestHeader(u,i[u]);o.onreadystatechange=function(){if(4===o.readyState){switch(o.status){case 200:case 201:case 204:case 304:var e=null;o.responseText&&(e=JSON.parse(o.responseText,a));c({data:e,headers:n(o.getAllResponseHeaders()),status:o.status});break;default:var t;try{t=JSON.parse(o.response).error}catch(e){t=new Error("Unexpected Error")}t.status=o.status,s(t)}o=null}},o.onerror=function(){s({message:"Network Error"}),o=null},o.ontimeout=function(e){s({message:"Request Timed Out"}),o=null},r?o.send(r):o.send()};e.exports=i},function(e,t,r){function a(e,t,r,n){var s={},o=[];if(n=null!=n?n:"&",e){if(e.navigationProperty&&(c.stringParameterCheck(e.navigationProperty,"DynamicsWebApi."+t,"request.navigationProperty"),r+="/"+e.navigationProperty),null!=e.select&&e.select.length&&(c.arrayParameterCheck(e.select,"DynamicsWebApi."+t,"request.select"),"retrieve"==t&&1==e.select.length&&e.select[0].endsWith("/$ref")?r+="/"+e.select[0]:(e.select[0].startsWith("/")&&"retrieve"==t&&(null==e.navigationProperty?r+=e.select.shift():e.select.shift()),e.select.length&&o.push("$select="+e.select.join(",")))),e.filter&&(c.stringParameterCheck(e.filter,"DynamicsWebApi."+t,"request.filter"),o.push("$filter="+e.filter)),e.savedQuery&&o.push("savedQuery="+c.guidParameterCheck(e.savedQuery,"DynamicsWebApi."+t,"request.savedQuery")),e.userQuery&&o.push("userQuery="+c.guidParameterCheck(e.userQuery,"DynamicsWebApi."+t,"request.userQuery")),e.maxPageSize&&e.maxPageSize>0&&(c.numberParameterCheck(e.maxPageSize,"DynamicsWebApi."+t,"request.maxPageSize"),s.Prefer="odata.maxpagesize="+e.maxPageSize),e.count&&(c.boolParameterCheck(e.count,"DynamicsWebApi."+t,"request.count"),o.push("$count="+e.count)),e.top&&e.top>0&&(c.numberParameterCheck(e.top,"DynamicsWebApi."+t,"request.top"),o.push("$top="+e.top)),null!=e.orderBy&&e.orderBy.length&&(c.arrayParameterCheck(e.orderBy,"DynamicsWebApi."+t,"request.orderBy"),o.push("$orderby="+e.orderBy.join(","))),e.returnRepresentation&&(c.boolParameterCheck(e.returnRepresentation,"DynamicsWebApi."+t,"request.returnRepresentation"),s.Prefer=i.Prefer.ReturnRepresentation),e.includeAnnotations&&(c.stringParameterCheck(e.includeAnnotations,"DynamicsWebApi."+t,"request.includeAnnotations"),s.Prefer='odata.include-annotations="'+e.includeAnnotations+'"'),null!=e.ifmatch&&null!=e.ifnonematch)throw Error("DynamicsWebApi."+t+". Either one of request.ifmatch or request.ifnonematch parameters shoud be used in a call, not both.");if(e.ifmatch&&(c.stringParameterCheck(e.ifmatch,"DynamicsWebApi."+t,"request.ifmatch"),s["If-Match"]=e.ifmatch),e.ifnonematch&&(c.stringParameterCheck(e.ifnonematch,"DynamicsWebApi."+t,"request.ifnonematch"),s["If-None-Match"]=e.ifnonematch),e.impersonate&&(c.stringParameterCheck(e.impersonate,"DynamicsWebApi."+t,"request.impersonate"),s.MSCRMCallerID=c.guidParameterCheck(e.impersonate,"DynamicsWebApi."+t,"request.impersonate")),null!=e.expand&&e.expand.length){c.arrayParameterCheck(e.expand,"DynamicsWebApi."+t,"request.expand");for(var u=[],l=0;l0&&(t[i.substring(0,c)]=i.substring(c+2))}return t}},function(e,t){e.exports=function(e){if(e){for(var t=Object.keys(e),r="",a="",n=1;n<=t.length;n++){var i=t[n-1],c=e[i];n>1&&(r+=",",a+="&"),r+=i+"=@p"+n,a+="@p"+n+"="+("string"==typeof c?"'"+c+"'":c)}return"("+r+")?"+a}return"()"}},function(e,t){e.exports=function(e){var t=/\/(\w+)\(([0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12})/i.exec(e["@odata.id"]);return{id:t[2],collection:t[1],oDataContext:e["@odata.context"]}}},function(e,t){e.exports=function(e,t){e=e?e:"",t=t?t:1,e=unescape(unescape(e));var r=/pagingcookie="()/.exec(e);if(null!=r){var a=parseInt(r[2]);return{cookie:r[1].replace(//g,">").replace(/\"/g,"'").replace(/\'/g,"""),page:a,nextPage:a+1}}return{cookie:"",page:t,nextPage:t+1}}},function(e,t,r){function a(e){var t=function(){if("undefined"!=typeof Xrm){var e=Xrm.Page.context.getClientUrl();return e.match(/\/$/)&&(e=e.substring(0,e.length-1)),e}return""},s="8.0",o=null,u=function(){return t()+"/api/data/v"+s+"/"},l=u(),p=function(e,t){return"string"==typeof e&&e.endsWith("@odata.bind")&&"string"==typeof t&&!t.startsWith(l)&&(t=l+t),t},d=function(e,t,a,n){o&&(!n||n&&!n.MSCRMCallerID)&&(n||(n={}),n.MSCRMCallerID=o);var i;a&&(i=JSON.stringify(a,p));var c;return"undefined"!=typeof XMLHttpRequest&&(c=r(3)),new Promise(function(r,a){c(e,l+t,i,n,r,a)})};this.setConfig=function(e){e.webApiVersion&&(c.stringParameterCheck(e.webApiVersion,"DynamicsWebApi.setConfig","config.webApiVersion"),s=e.webApiVersion,l=u()),e.webApiUrl&&(c.stringParameterCheck(e.webApiUrl,"DynamicsWebApi.setConfig","config.webApiUrl"),l=e.webApiUrl),e.impersonate&&(o=c.guidParameterCheck(e.impersonate,"DynamicsWebApi.setConfig","config.impersonate"))},null!=e&&this.setConfig(e),this.create=function(e,t,r){c.parameterCheck(e,"DynamicsWebApi.create","object"),c.stringParameterCheck(t,"DynamicsWebApi.create","collection");var a={};return null!=r&&(c.stringParameterCheck(r,"DynamicsWebApi.create","prefer"),a.Prefer=r),d("POST",t.toLowerCase(),e,a).then(function(e){if(e.data)return e.data;var t=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];return/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(t)[0]})},this.retrieveRequest=function(e){c.parameterCheck(e,"DynamicsWebApi.retrieve","request");var t=i.convertRequest(e,"retrieve"),r=e.select;return d("GET",t.url,null,t.headers).then(function(e){return null!=r&&1==r.length&&r[0].endsWith("/$ref")&&null!=e.data["@odata.id"]?n.convertToReferenceObject(e.data):e.data})},this.retrieve=function(e,t,r,a){c.stringParameterCheck(e,"DynamicsWebApi.retrieve","id"),e=c.guidParameterCheck(e,"DynamicsWebApi.retrieve","id"),c.stringParameterCheck(t,"DynamicsWebApi.retrieve","collection");var i=t.toLowerCase()+"("+e+")",s=[];return null!=r&&r.length&&(c.arrayParameterCheck(r,"DynamicsWebApi.retrieve","select"),1==r.length&&r[0].endsWith("/$ref")&&r[0].endsWith("/$ref")?i+="/"+r[0]:(r[0].startsWith("/")&&(i+=r.shift()),r.length&&s.push("$select="+r.join(",")))),null!=a&&(c.stringParameterCheck(a,"DynamicsWebApi.retrieve","expand"),s.push("$expand="+a)),s.length&&(i+="?"+s.join("&")),d("GET",i).then(function(e){return null!=r&&1==r.length&&r[0].endsWith("/$ref")&&null!=e.data["@odata.id"]?n.convertToReferenceObject(e.data):e.data})},this.updateRequest=function(e){c.parameterCheck(e,"DynamicsWebApi.update","request"),c.parameterCheck(e.entity,"DynamicsWebApi.update","request.entity");var t=i.convertRequest(e,"update");null==e.ifmatch&&(t.headers["If-Match"]="*");var r=e.ifmatch;return d("PATCH",t.url,e.entity,t.headers).then(function(e){return!e.data||e.data}).catch(function(e){if(r&&412==e.status)return!1;throw e})},this.update=function(e,t,r,a,n){c.stringParameterCheck(e,"DynamicsWebApi.update","id"),e=c.guidParameterCheck(e,"DynamicsWebApi.update","id"),c.parameterCheck(r,"DynamicsWebApi.update","object"),c.stringParameterCheck(t,"DynamicsWebApi.update","collection");var i={"If-Match":"*"};null!=a&&(c.stringParameterCheck(a,"DynamicsWebApi.update","prefer"),i.Prefer=a);var s="";return null!=n&&(c.arrayParameterCheck(n,"DynamicsWebApi.update","select"),n.length>0&&(s="?$select="+n.join(","))),d("PATCH",t.toLowerCase()+"("+e+")"+s,r,i).then(function(e){if(e.data)return e.data})},this.updateSingleProperty=function(e,t,r,a){c.stringParameterCheck(e,"DynamicsWebApi.updateSingleProperty","id"),e=c.guidParameterCheck(e,"DynamicsWebApi.updateSingleProperty","id"),c.parameterCheck(r,"DynamicsWebApi.updateSingleProperty","keyValuePair"),c.stringParameterCheck(t,"DynamicsWebApi.updateSingleProperty","collection");var n=Object.keys(r)[0],i=r[n],s={};return null!=a&&(c.stringParameterCheck(a,"DynamicsWebApi.updateSingleProperty","prefer"),s.Prefer=a),d("PUT",t.toLowerCase()+"("+e+")/"+n,{value:i},s).then(function(e){if(e.data)return e.data})},this.deleteRequest=function(e){c.parameterCheck(e,"DynamicsWebApi.delete","request");var t=i.convertRequest(e,"delete"),r=e.ifmatch;return d("DELETE",t.url,null,t.headers).then(function(){return!0}).catch(function(e){if(r&&412==e.status)return!1;throw e})},this.deleteRecord=function(e,t,r){c.stringParameterCheck(e,"DynamicsWebApi.deleteRequest","id"),e=c.guidParameterCheck(e,"DynamicsWebApi.deleteRequest","id"),c.stringParameterCheck(t,"DynamicsWebApi.deleteRequest","collection"),null!=r&&c.stringParameterCheck(r,"DynamicsWebApi.deleteRequest","propertyName");var a=t.toLowerCase()+"("+e+")";return null!=r&&(a+="/"+r),d("DELETE",a).then(function(){})},this.upsertRequest=function(e){c.parameterCheck(e,"DynamicsWebApi.upsert","request"),c.parameterCheck(e.entity,"DynamicsWebApi.upsert","request.entity");var t=i.convertRequest(e,"upsert"),r=e.ifnonematch,a=e.ifmatch;return d("PATCH",t.url,e.entity,t.headers).then(function(e){if(e.headers["OData-EntityId"]||e.headers["odata-entityid"]){var t=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];return/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(t)[0]}if(e.data)return e.data}).catch(function(e){if(!(r&&412==e.status||a&&404==e.status))throw e})},this.upsert=function(e,t,r,a,n){c.stringParameterCheck(e,"DynamicsWebApi.upsert","id"),e=c.guidParameterCheck(e,"DynamicsWebApi.upsert","id"),c.parameterCheck(r,"DynamicsWebApi.upsert","object"),c.stringParameterCheck(t,"DynamicsWebApi.upsert","collection");var i={};null!=a&&(c.stringParameterCheck(a,"DynamicsWebApi.upsert","prefer"),i.Prefer=a);var s="";return null!=n&&(c.arrayParameterCheck(n,"DynamicsWebApi.upsert","select"),n.length>0&&(s="?$select="+n.join(","))),d("PATCH",t.toLowerCase()+"("+e+")"+s,r,i).then(function(e){if(e.headers["OData-EntityId"]||e.headers["odata-entityid"]){var t=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];return/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(t)[0]}if(e.data)return e.data})};var m=function(e,t){t&&!e.collection&&(e.collection="any");var r=i.convertRequest(e,"retrieveMultiple");t&&(c.stringParameterCheck(t,"DynamicsWebApi.retrieveMultiple","nextPageLink"),r.url=t.replace(l,""));var a=e.count;return d("GET",r.url,null,r.headers).then(function(e){return null!=e.data["@odata.nextLink"]&&(e.data.oDataNextLink=e.data["@odata.nextLink"]),a&&(e.data.oDataCount=null!=e.data["@odata.count"]?parseInt(e.data["@odata.count"]):0),null!=e.data["@odata.context"]&&(e.data.oDataContext=e.data["@odata.context"]),e.data})};this.retrieveMultipleRequest=m;this.count=function(e,t){return null==t||null!=t&&!t.length?(c.stringParameterCheck(e,"DynamicsWebApi.count","collection"),d("GET",e.toLowerCase()+"/$count").then(function(e){return e.data?parseInt(e.data):0})):this.retrieveMultipleRequest({collection:e,filter:t,count:!0},null).then(function(e){return e.oDataCount?e.oDataCount:0})},this.retrieveMultiple=function(e,t,r,a){return this.retrieveMultipleRequest({collection:e,select:t,filter:r},a)},this.executeFetchXml=function(e,t,r,a,i,s){c.stringParameterCheck(e,"DynamicsWebApi.executeFetchXml","type"),c.stringParameterCheck(t,"DynamicsWebApi.executeFetchXml","fetchXml"),null==a&&(a=1),c.numberParameterCheck(a,"DynamicsWebApi.executeFetchXml","pageNumber");var o="$1 page='"+a+"'";null!=i&&(c.stringParameterCheck(i,"DynamicsWebApi.executeFetchXml","pagingCookie"),o+=" paging-cookie='"+i+"'"),t=t.replace(/^(r.length)&&(t=r.length),t-=e.length;var n=r.lastIndexOf(e,t);return n!==-1&&n===t},String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}},function(e,t,r){e.exports=function(e,t,n,a,i,s,o){n.impersonate&&(!i||i&&!i.MSCRMCallerID)&&(i||(i={}),i.MSCRMCallerID=n.impersonate);var c;a&&(c=JSON.stringify(a,function(e,t){return e.endsWith("@odata.bind")&&"string"==typeof t&&!t.startsWith(n.webApiUrl)&&(t=n.webApiUrl+t),t}));var u;"undefined"!=typeof XMLHttpRequest&&(u=r(8));var l=function(r){r&&(i||(i={}),i.Authorization="Bearer: "+r),u(e,n.webApiUrl+t,c,i,s,o)};n.onTokenRefresh&&(!i||i&&!i.Authorization)?n.onTokenRefresh(l):l()}},function(e,t,r){function n(e,t,r,a){var o={},c=[];if(a=null!=a?a:"&",e){if(e.navigationProperty&&(s.stringParameterCheck(e.navigationProperty,"DynamicsWebApi."+t,"request.navigationProperty"),r+="/"+e.navigationProperty),null!=e.select&&e.select.length&&(s.arrayParameterCheck(e.select,"DynamicsWebApi."+t,"request.select"),"retrieve"==t&&1==e.select.length&&e.select[0].endsWith("/$ref")?r+="/"+e.select[0]:(e.select[0].startsWith("/")&&"retrieve"==t&&(null==e.navigationProperty?r+=e.select.shift():e.select.shift()),e.select.length&&c.push("$select="+e.select.join(",")))),e.filter&&(s.stringParameterCheck(e.filter,"DynamicsWebApi."+t,"request.filter"),c.push("$filter="+e.filter)),e.savedQuery&&c.push("savedQuery="+s.guidParameterCheck(e.savedQuery,"DynamicsWebApi."+t,"request.savedQuery")),e.userQuery&&c.push("userQuery="+s.guidParameterCheck(e.userQuery,"DynamicsWebApi."+t,"request.userQuery")),e.maxPageSize&&e.maxPageSize>0&&(s.numberParameterCheck(e.maxPageSize,"DynamicsWebApi."+t,"request.maxPageSize"),o.Prefer="odata.maxpagesize="+e.maxPageSize),e.count&&(s.boolParameterCheck(e.count,"DynamicsWebApi."+t,"request.count"),c.push("$count="+e.count)),e.top&&e.top>0&&(s.numberParameterCheck(e.top,"DynamicsWebApi."+t,"request.top"),c.push("$top="+e.top)),null!=e.orderBy&&e.orderBy.length&&(s.arrayParameterCheck(e.orderBy,"DynamicsWebApi."+t,"request.orderBy"),c.push("$orderby="+e.orderBy.join(","))),e.returnRepresentation&&(s.boolParameterCheck(e.returnRepresentation,"DynamicsWebApi."+t,"request.returnRepresentation"),o.Prefer=i.Prefer.ReturnRepresentation),e.includeAnnotations&&(s.stringParameterCheck(e.includeAnnotations,"DynamicsWebApi."+t,"request.includeAnnotations"),o.Prefer='odata.include-annotations="'+e.includeAnnotations+'"'),null!=e.ifmatch&&null!=e.ifnonematch)throw Error("DynamicsWebApi."+t+". Either one of request.ifmatch or request.ifnonematch parameters shoud be used in a call, not both.");if(e.ifmatch&&(s.stringParameterCheck(e.ifmatch,"DynamicsWebApi."+t,"request.ifmatch"),o["If-Match"]=e.ifmatch),e.ifnonematch&&(s.stringParameterCheck(e.ifnonematch,"DynamicsWebApi."+t,"request.ifnonematch"),o["If-None-Match"]=e.ifnonematch),e.impersonate&&(s.stringParameterCheck(e.impersonate,"DynamicsWebApi."+t,"request.impersonate"),o.MSCRMCallerID=s.guidParameterCheck(e.impersonate,"DynamicsWebApi."+t,"request.impersonate")),e.token&&(s.stringParameterCheck(e.token,"DynamicsWebApi."+t,"request.token"),o.Authorization="Bearer: "+e.token),null!=e.expand&&e.expand.length){s.arrayParameterCheck(e.expand,"DynamicsWebApi."+t,"request.expand");for(var u=[],l=0;l0&&(t[i.substring(0,s)]=i.substring(s+2))}return t}},function(e,t,r){var n=r(6),a=r(7),i=function(e,t,r,i,s,o){var c=new XMLHttpRequest;if(c.open(e,encodeURI(t),!0),c.setRequestHeader("OData-MaxVersion","4.0"),c.setRequestHeader("OData-Version","4.0"),c.setRequestHeader("Accept","application/json"),c.setRequestHeader("Content-Type","application/json; charset=utf-8"),null!=i)for(var u in i)c.setRequestHeader(u,i[u]);c.onreadystatechange=function(){if(4===c.readyState){switch(c.status){case 200:case 201:case 204:case 304:var e=null;c.responseText&&(e=JSON.parse(c.responseText,n));s({data:e,headers:a(c.getAllResponseHeaders()),status:c.status});break;default:var t;try{t=JSON.parse(c.response).error}catch(e){t=new Error("Unexpected Error")}t.status=c.status,o(t)}c=null}},c.onerror=function(){o({message:"Network Error"}),c=null},c.ontimeout=function(e){o({message:"Request Timed Out"}),c=null},r?c.send(r):c.send()};e.exports=i},function(e,t){e.exports=function(e){if(e){for(var t=Object.keys(e),r="",n="",a=1;a<=t.length;a++){var i=t[a-1],s=e[i];a>1&&(r+=",",n+="&"),r+=i+"=@p"+a,n+="@p"+a+"="+("string"==typeof s?"'"+s+"'":s)}return"("+r+")?"+n}return"()"}},function(e,t){e.exports=function(e){var t=/\/(\w+)\(([0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12})/i.exec(e["@odata.id"]);return{id:t[2],collection:t[1],oDataContext:e["@odata.context"]}}},function(e,t){e.exports=function(e,t){e=e?e:"",t=t?t:1,e=unescape(unescape(e));var r=/pagingcookie="()/.exec(e);if(null!=r){var n=parseInt(r[2]);return{cookie:r[1].replace(//g,">").replace(/\"/g,"'").replace(/\'/g,"""),page:n,nextPage:n+1}}return{cookie:"",page:t,nextPage:t+1}}},function(e,t,r){function n(e){var t={webApiVersion:"8.0",webApiUrl:null,impersonate:null,onTokenRefresh:null};e||(e=t);var o=function(){if("undefined"!=typeof GetGlobalContext)return GetGlobalContext();if("undefined"!=typeof Xrm)return Xrm.Page.context;throw new Error("Xrm Context is not available.")},c=function(){var e=o();if(e){var t=e.getClientUrl();return t.match(/\/$/)&&(t=t.substring(0,t.length-1)),t}return""},u=function(){return c()+"/api/data/v"+t.webApiVersion+"/"};this.setConfig=function(e){e.webApiVersion&&(s.stringParameterCheck(e.webApiVersion,"DynamicsWebApi.setConfig","config.webApiVersion"),t.webApiVersion=e.webApiVersion),e.webApiUrl?(s.stringParameterCheck(e.webApiUrl,"DynamicsWebApi.setConfig","config.webApiUrl"),t.webApiUrl=e.webApiUrl):t.webApiUrl=u(),e.impersonate&&(t.impersonate=s.guidParameterCheck(e.impersonate,"DynamicsWebApi.setConfig","config.impersonate")),e.onTokenRefresh&&(s.callbackParameterCheck(e.onTokenRefresh,"DynamicsWebApi.setConfig","config.onTokenRefresh"),t.onTokenRefresh=e.onTokenRefresh)},this.setConfig(e);var l=function(e,n,a,i){return new Promise(function(s,o){r(3)(e,n,t,a,i,s,o)})};this.create=function(e,t,r){s.parameterCheck(e,"DynamicsWebApi.create","object"),s.stringParameterCheck(t,"DynamicsWebApi.create","collection");var n={};return null!=r&&(s.stringParameterCheck(r,"DynamicsWebApi.create","prefer"),n.Prefer=r),l("POST",t.toLowerCase(),e,n).then(function(e){if(e.data)return e.data;var t=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];return/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(t)[0]})},this.retrieveRequest=function(e){s.parameterCheck(e,"DynamicsWebApi.retrieve","request");var t=i.convertRequest(e,"retrieve"),r=e.select;return l("GET",t.url,null,t.headers).then(function(e){return null!=r&&1==r.length&&r[0].endsWith("/$ref")&&null!=e.data["@odata.id"]?a.convertToReferenceObject(e.data):e.data})},this.retrieve=function(e,t,r,n){s.stringParameterCheck(e,"DynamicsWebApi.retrieve","id"),e=s.guidParameterCheck(e,"DynamicsWebApi.retrieve","id"),s.stringParameterCheck(t,"DynamicsWebApi.retrieve","collection");var i=t.toLowerCase()+"("+e+")",o=[];return null!=r&&r.length&&(s.arrayParameterCheck(r,"DynamicsWebApi.retrieve","select"),1==r.length&&r[0].endsWith("/$ref")&&r[0].endsWith("/$ref")?i+="/"+r[0]:(r[0].startsWith("/")&&(i+=r.shift()),r.length&&o.push("$select="+r.join(",")))),null!=n&&(s.stringParameterCheck(n,"DynamicsWebApi.retrieve","expand"),o.push("$expand="+n)),o.length&&(i+="?"+o.join("&")),l("GET",i).then(function(e){return null!=r&&1==r.length&&r[0].endsWith("/$ref")&&null!=e.data["@odata.id"]?a.convertToReferenceObject(e.data):e.data})},this.updateRequest=function(e){s.parameterCheck(e,"DynamicsWebApi.update","request"),s.parameterCheck(e.entity,"DynamicsWebApi.update","request.entity");var t=i.convertRequest(e,"update");null==e.ifmatch&&(t.headers["If-Match"]="*");var r=e.ifmatch;return l("PATCH",t.url,e.entity,t.headers).then(function(e){return!e.data||e.data}).catch(function(e){if(r&&412==e.status)return!1;throw e})},this.update=function(e,t,r,n,a){s.stringParameterCheck(e,"DynamicsWebApi.update","id"),e=s.guidParameterCheck(e,"DynamicsWebApi.update","id"),s.parameterCheck(r,"DynamicsWebApi.update","object"),s.stringParameterCheck(t,"DynamicsWebApi.update","collection");var i={"If-Match":"*"};null!=n&&(s.stringParameterCheck(n,"DynamicsWebApi.update","prefer"),i.Prefer=n);var o="";return null!=a&&(s.arrayParameterCheck(a,"DynamicsWebApi.update","select"),a.length>0&&(o="?$select="+a.join(","))),l("PATCH",t.toLowerCase()+"("+e+")"+o,r,i).then(function(e){if(e.data)return e.data})},this.updateSingleProperty=function(e,t,r,n){s.stringParameterCheck(e,"DynamicsWebApi.updateSingleProperty","id"),e=s.guidParameterCheck(e,"DynamicsWebApi.updateSingleProperty","id"),s.parameterCheck(r,"DynamicsWebApi.updateSingleProperty","keyValuePair"),s.stringParameterCheck(t,"DynamicsWebApi.updateSingleProperty","collection");var a=Object.keys(r)[0],i=r[a],o={};return null!=n&&(s.stringParameterCheck(n,"DynamicsWebApi.updateSingleProperty","prefer"),o.Prefer=n),l("PUT",t.toLowerCase()+"("+e+")/"+a,{value:i},o).then(function(e){if(e.data)return e.data})},this.deleteRequest=function(e){s.parameterCheck(e,"DynamicsWebApi.delete","request");var t=i.convertRequest(e,"delete"),r=e.ifmatch;return l("DELETE",t.url,null,t.headers).then(function(){return!0}).catch(function(e){if(r&&412==e.status)return!1;throw e})},this.deleteRecord=function(e,t,r){s.stringParameterCheck(e,"DynamicsWebApi.deleteRequest","id"),e=s.guidParameterCheck(e,"DynamicsWebApi.deleteRequest","id"),s.stringParameterCheck(t,"DynamicsWebApi.deleteRequest","collection"),null!=r&&s.stringParameterCheck(r,"DynamicsWebApi.deleteRequest","propertyName");var n=t.toLowerCase()+"("+e+")";return null!=r&&(n+="/"+r),l("DELETE",n).then(function(){})},this.upsertRequest=function(e){s.parameterCheck(e,"DynamicsWebApi.upsert","request"),s.parameterCheck(e.entity,"DynamicsWebApi.upsert","request.entity");var t=i.convertRequest(e,"upsert"),r=e.ifnonematch,n=e.ifmatch;return l("PATCH",t.url,e.entity,t.headers).then(function(e){if(e.headers["OData-EntityId"]||e.headers["odata-entityid"]){var t=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];return/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(t)[0]}if(e.data)return e.data}).catch(function(e){if(!(r&&412==e.status||n&&404==e.status))throw e})},this.upsert=function(e,t,r,n,a){s.stringParameterCheck(e,"DynamicsWebApi.upsert","id"),e=s.guidParameterCheck(e,"DynamicsWebApi.upsert","id"),s.parameterCheck(r,"DynamicsWebApi.upsert","object"),s.stringParameterCheck(t,"DynamicsWebApi.upsert","collection");var i={};null!=n&&(s.stringParameterCheck(n,"DynamicsWebApi.upsert","prefer"),i.Prefer=n);var o="";return null!=a&&(s.arrayParameterCheck(a,"DynamicsWebApi.upsert","select"),a.length>0&&(o="?$select="+a.join(","))),l("PATCH",t.toLowerCase()+"("+e+")"+o,r,i).then(function(e){if(e.headers["OData-EntityId"]||e.headers["odata-entityid"]){var t=e.headers["OData-EntityId"]?e.headers["OData-EntityId"]:e.headers["odata-entityid"];return/[0-9A-F]{8}[-]?([0-9A-F]{4}[-]?){3}[0-9A-F]{12}/i.exec(t)[0]}if(e.data)return e.data})};var p=function(e,r){r&&!e.collection&&(e.collection="any");var n=i.convertRequest(e,"retrieveMultiple");r&&(s.stringParameterCheck(r,"DynamicsWebApi.retrieveMultiple","nextPageLink"),n.url=r.replace(t.webApiUrl,""));var a=e.count;return l("GET",n.url,null,n.headers).then(function(e){return null!=e.data["@odata.nextLink"]&&(e.data.oDataNextLink=e.data["@odata.nextLink"]),a&&(e.data.oDataCount=null!=e.data["@odata.count"]?parseInt(e.data["@odata.count"]):0),null!=e.data["@odata.context"]&&(e.data.oDataContext=e.data["@odata.context"]),e.data})};this.retrieveMultipleRequest=p,this.count=function(e,t){return null==t||null!=t&&!t.length?(s.stringParameterCheck(e,"DynamicsWebApi.count","collection"),l("GET",e.toLowerCase()+"/$count").then(function(e){return e.data?parseInt(e.data):0})):this.retrieveMultipleRequest({collection:e,filter:t,count:!0},null).then(function(e){return e.oDataCount?e.oDataCount:0})},this.retrieveMultiple=function(e,t,r,n){return this.retrieveMultipleRequest({collection:e,select:t,filter:r},n)},this.executeFetchXml=function(e,t,r,n,i,o){s.stringParameterCheck(e,"DynamicsWebApi.executeFetchXml","type"),s.stringParameterCheck(t,"DynamicsWebApi.executeFetchXml","fetchXml"),null==n&&(n=1),s.numberParameterCheck(n,"DynamicsWebApi.executeFetchXml","pageNumber");var c="$1 page='"+n+"'";null!=i&&(s.stringParameterCheck(i,"DynamicsWebApi.executeFetchXml","pagingCookie"),c+=" paging-cookie='"+i+"'"),t=t.replace(/^(