Skip to content

Commit 0d70184

Browse files
Release v1.5.13
1 parent 98d8be7 commit 0d70184

File tree

6 files changed

+86
-58
lines changed

6 files changed

+86
-58
lines changed

dist/dynamics-web-api-callbacks.js

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! dynamics-web-api-callbacks v1.5.12 (c) 2019 Aleksandr Rogov */
1+
/*! dynamics-web-api-callbacks v1.5.13 (c) 2019 Aleksandr Rogov */
22
(function webpackUniversalModuleDefinition(root, factory) {
33
if(typeof exports === 'object' && typeof module === 'object')
44
module.exports = factory();
@@ -168,13 +168,13 @@ function generateUUID() { // Public Domain/MIT
168168
}
169169

170170
function getXrmContext() {
171-
if (typeof GetGlobalContext != 'undefined') {
171+
if (typeof GetGlobalContext !== 'undefined') {
172172
return GetGlobalContext();
173173
}
174174
else {
175-
if (typeof Xrm != 'undefined') {
175+
if (typeof Xrm !== 'undefined') {
176176
//d365 v.9.0
177-
if ((!isNull(Xrm.Utility) && !isNull(Xrm.Utility.getGlobalContext))) {
177+
if (!isNull(Xrm.Utility) && !isNull(Xrm.Utility.getGlobalContext)) {
178178
return Xrm.Utility.getGlobalContext();
179179
}
180180
else if (!isNull(Xrm.Page) && !isNull(Xrm.Page.context)) {
@@ -203,11 +203,11 @@ function initWebApiUrl(version) {
203203

204204
function getXrmInternal() {
205205
//todo: Xrm.Internal namespace is not supported
206-
if (typeof Xrm !== 'undefined') {
207-
return Xrm.Internal;
208-
}
206+
return typeof Xrm !== "undefined" ? Xrm.Internal : null;
207+
}
209208

210-
return null;
209+
function getXrmUtility() {
210+
return typeof Xrm !== "undefined" ? Xrm.Utility : null;
211211
}
212212

213213
var Utility = {
@@ -249,6 +249,8 @@ var Utility = {
249249

250250
getXrmInternal: getXrmInternal,
251251

252+
getXrmUtility: getXrmUtility,
253+
252254
getClientUrl: getClientUrl,
253255

254256
initWebApiUrl: initWebApiUrl
@@ -775,7 +777,8 @@ var _entityNames;
775777
*/
776778
function findCollectionName(entityName) {
777779
var xrmInternal = Utility.getXrmInternal();
778-
if (!Utility.isNull(xrmInternal)) {
780+
781+
if (!Utility.isNull(xrmInternal) && typeof xrmInternal.getEntitySetName === "function") {
779782
return xrmInternal.getEntitySetName(entityName) || entityName;
780783
}
781784

@@ -785,7 +788,7 @@ function findCollectionName(entityName) {
785788
collectionName = _entityNames[entityName];
786789
if (Utility.isNull(collectionName)) {
787790
for (var key in _entityNames) {
788-
if (_entityNames[key] == entityName) {
791+
if (_entityNames[key] === entityName) {
789792
return entityName;
790793
}
791794
}
@@ -989,26 +992,37 @@ function sendRequest(method, path, config, data, additionalHeaders, responsePara
989992

990993
function _getEntityNames(entityName, config, successCallback, errorCallback) {
991994

992-
var resolve = function (result) {
993-
_entityNames = {};
994-
for (var i = 0; i < result.data.value.length; i++) {
995-
_entityNames[result.data.value[i].LogicalName] = result.data.value[i].LogicalCollectionName;
996-
}
995+
var xrmUtility = Utility.getXrmUtility();
997996

998-
successCallback(findCollectionName(entityName));
999-
};
997+
//try using Xrm.Utility.getEntityMetadata first (because D365 caches metadata)
998+
if (!Utility.isNull(xrmUtility) && typeof xrmUtility.getEntityMetadata === "function") {
999+
xrmUtility.getEntityMetadata(entityName).then(function (response) {
1000+
successCallback(response.EntitySetName);
1001+
}, errorCallback);
1002+
}
1003+
else {
1004+
//make a web api call for Node.js apps
1005+
var resolve = function (result) {
1006+
_entityNames = {};
1007+
for (var i = 0; i < result.data.value.length; i++) {
1008+
_entityNames[result.data.value[i].LogicalName] = result.data.value[i].EntitySetName;
1009+
}
10001010

1001-
var reject = function (error) {
1002-
errorCallback({ message: 'Unable to fetch EntityDefinitions. Error: ' + error.message });
1003-
};
1011+
successCallback(findCollectionName(entityName));
1012+
};
10041013

1005-
var request = RequestConverter.convertRequest({
1006-
collection: 'EntityDefinitions',
1007-
select: ['LogicalCollectionName', 'LogicalName'],
1008-
noCache: true
1009-
}, 'retrieveMultiple', config);
1014+
var reject = function (error) {
1015+
errorCallback({ message: 'Unable to fetch EntityDefinitions. Error: ' + error.message });
1016+
};
1017+
1018+
var request = RequestConverter.convertRequest({
1019+
collection: 'EntityDefinitions',
1020+
select: ['EntitySetName', 'LogicalName'],
1021+
noCache: true
1022+
}, 'retrieveMultiple', config);
10101023

1011-
sendRequest('GET', request.url, config, null, request.headers, null, resolve, reject, false, request.async);
1024+
sendRequest('GET', request.url, config, null, request.headers, null, resolve, reject, false, request.async);
1025+
}
10121026
}
10131027

10141028
function _isEntityNameException(entityName) {

dist/dynamics-web-api-callbacks.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/dynamics-web-api.js

Lines changed: 40 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! dynamics-web-api v1.5.12 (c) 2019 Aleksandr Rogov */
1+
/*! dynamics-web-api v1.5.13 (c) 2019 Aleksandr Rogov */
22
(function webpackUniversalModuleDefinition(root, factory) {
33
if(typeof exports === 'object' && typeof module === 'object')
44
module.exports = factory();
@@ -168,13 +168,13 @@ function generateUUID() { // Public Domain/MIT
168168
}
169169

170170
function getXrmContext() {
171-
if (typeof GetGlobalContext != 'undefined') {
171+
if (typeof GetGlobalContext !== 'undefined') {
172172
return GetGlobalContext();
173173
}
174174
else {
175-
if (typeof Xrm != 'undefined') {
175+
if (typeof Xrm !== 'undefined') {
176176
//d365 v.9.0
177-
if ((!isNull(Xrm.Utility) && !isNull(Xrm.Utility.getGlobalContext))) {
177+
if (!isNull(Xrm.Utility) && !isNull(Xrm.Utility.getGlobalContext)) {
178178
return Xrm.Utility.getGlobalContext();
179179
}
180180
else if (!isNull(Xrm.Page) && !isNull(Xrm.Page.context)) {
@@ -203,11 +203,11 @@ function initWebApiUrl(version) {
203203

204204
function getXrmInternal() {
205205
//todo: Xrm.Internal namespace is not supported
206-
if (typeof Xrm !== 'undefined') {
207-
return Xrm.Internal;
208-
}
206+
return typeof Xrm !== "undefined" ? Xrm.Internal : null;
207+
}
209208

210-
return null;
209+
function getXrmUtility() {
210+
return typeof Xrm !== "undefined" ? Xrm.Utility : null;
211211
}
212212

213213
var Utility = {
@@ -249,6 +249,8 @@ var Utility = {
249249

250250
getXrmInternal: getXrmInternal,
251251

252+
getXrmUtility: getXrmUtility,
253+
252254
getClientUrl: getClientUrl,
253255

254256
initWebApiUrl: initWebApiUrl
@@ -485,7 +487,8 @@ var _entityNames;
485487
*/
486488
function findCollectionName(entityName) {
487489
var xrmInternal = Utility.getXrmInternal();
488-
if (!Utility.isNull(xrmInternal)) {
490+
491+
if (!Utility.isNull(xrmInternal) && typeof xrmInternal.getEntitySetName === "function") {
489492
return xrmInternal.getEntitySetName(entityName) || entityName;
490493
}
491494

@@ -495,7 +498,7 @@ function findCollectionName(entityName) {
495498
collectionName = _entityNames[entityName];
496499
if (Utility.isNull(collectionName)) {
497500
for (var key in _entityNames) {
498-
if (_entityNames[key] == entityName) {
501+
if (_entityNames[key] === entityName) {
499502
return entityName;
500503
}
501504
}
@@ -699,26 +702,37 @@ function sendRequest(method, path, config, data, additionalHeaders, responsePara
699702

700703
function _getEntityNames(entityName, config, successCallback, errorCallback) {
701704

702-
var resolve = function (result) {
703-
_entityNames = {};
704-
for (var i = 0; i < result.data.value.length; i++) {
705-
_entityNames[result.data.value[i].LogicalName] = result.data.value[i].LogicalCollectionName;
706-
}
705+
var xrmUtility = Utility.getXrmUtility();
707706

708-
successCallback(findCollectionName(entityName));
709-
};
707+
//try using Xrm.Utility.getEntityMetadata first (because D365 caches metadata)
708+
if (!Utility.isNull(xrmUtility) && typeof xrmUtility.getEntityMetadata === "function") {
709+
xrmUtility.getEntityMetadata(entityName).then(function (response) {
710+
successCallback(response.EntitySetName);
711+
}, errorCallback);
712+
}
713+
else {
714+
//make a web api call for Node.js apps
715+
var resolve = function (result) {
716+
_entityNames = {};
717+
for (var i = 0; i < result.data.value.length; i++) {
718+
_entityNames[result.data.value[i].LogicalName] = result.data.value[i].EntitySetName;
719+
}
710720

711-
var reject = function (error) {
712-
errorCallback({ message: 'Unable to fetch EntityDefinitions. Error: ' + error.message });
713-
};
721+
successCallback(findCollectionName(entityName));
722+
};
714723

715-
var request = RequestConverter.convertRequest({
716-
collection: 'EntityDefinitions',
717-
select: ['LogicalCollectionName', 'LogicalName'],
718-
noCache: true
719-
}, 'retrieveMultiple', config);
724+
var reject = function (error) {
725+
errorCallback({ message: 'Unable to fetch EntityDefinitions. Error: ' + error.message });
726+
};
720727

721-
sendRequest('GET', request.url, config, null, request.headers, null, resolve, reject, false, request.async);
728+
var request = RequestConverter.convertRequest({
729+
collection: 'EntityDefinitions',
730+
select: ['EntitySetName', 'LogicalName'],
731+
noCache: true
732+
}, 'retrieveMultiple', config);
733+
734+
sendRequest('GET', request.url, config, null, request.headers, null, resolve, reject, false, request.async);
735+
}
722736
}
723737

724738
function _isEntityNameException(entityName) {

dist/dynamics-web-api.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dynamics-web-api",
3-
"version": "1.5.12",
3+
"version": "1.5.13",
44
"description": "DynamicsWebApi is a Microsoft Dynamics CRM Web API helper library",
55
"keywords": [
66
"crm",

0 commit comments

Comments
 (0)