@azure/core-client 1.6.1-alpha.20220601.1 → 1.6.2-alpha.20220805.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -980,7 +980,30 @@ function deserializeSequenceType(serializer, mapper, responseBody, objectName, o
980
980
  }
981
981
  return responseBody;
982
982
  }
983
+ function getIndexDiscriminator(discriminators, discriminatorValue, typeName) {
984
+ const typeNamesToCheck = [typeName];
985
+ while (typeNamesToCheck.length) {
986
+ const currentName = typeNamesToCheck.shift();
987
+ const indexDiscriminator = discriminatorValue === currentName
988
+ ? discriminatorValue
989
+ : currentName + "." + discriminatorValue;
990
+ if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {
991
+ return discriminators[indexDiscriminator];
992
+ }
993
+ else {
994
+ for (const [name, mapper] of Object.entries(discriminators)) {
995
+ if (name.startsWith(currentName + ".") &&
996
+ mapper.type.uberParent === currentName &&
997
+ mapper.type.className) {
998
+ typeNamesToCheck.push(mapper.type.className);
999
+ }
1000
+ }
1001
+ }
1002
+ }
1003
+ return undefined;
1004
+ }
983
1005
  function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {
1006
+ var _a;
984
1007
  const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);
985
1008
  if (polymorphicDiscriminator) {
986
1009
  let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];
@@ -990,12 +1013,9 @@ function getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyNam
990
1013
  discriminatorName = discriminatorName.replace(/\\/gi, "");
991
1014
  }
992
1015
  const discriminatorValue = object[discriminatorName];
993
- if (discriminatorValue !== undefined && discriminatorValue !== null) {
994
- const typeName = mapper.type.uberParent || mapper.type.className;
995
- const indexDiscriminator = discriminatorValue === typeName
996
- ? discriminatorValue
997
- : typeName + "." + discriminatorValue;
998
- const polymorphicMapper = serializer.modelMappers.discriminators[indexDiscriminator];
1016
+ const typeName = (_a = mapper.type.uberParent) !== null && _a !== void 0 ? _a : mapper.type.className;
1017
+ if (typeof discriminatorValue === "string" && typeName) {
1018
+ const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName);
999
1019
  if (polymorphicMapper) {
1000
1020
  mapper = polymorphicMapper;
1001
1021
  }