(mc, node, meta, assignFn)
| 15002 | } |
| 15003 | |
| 15004 | function processMeta(mc, node, meta, assignFn) { |
| 15005 | // == is deliberate here instead of === |
| 15006 | if (meta.ignore || node == null) { |
| 15007 | return null; |
| 15008 | } else if (meta.nodeRefId) { |
| 15009 | var refValue = resolveEntityRef(mc, meta.nodeRefId); |
| 15010 | if (typeof refValue === "function" && assignFn != null) { |
| 15011 | mc.deferredFns.push(function () { |
| 15012 | assignFn(refValue); |
| 15013 | }); |
| 15014 | return undefined; // deferred and will be set later; |
| 15015 | } |
| 15016 | return refValue; |
| 15017 | } else if (meta.entityType) { |
| 15018 | var entityType = meta.entityType; |
| 15019 | if (mc.mergeOptions.noTracking) { |
| 15020 | node = processNoMerge(mc, entityType, node); |
| 15021 | if (entityType.noTrackingFn) { |
| 15022 | node = entityType.noTrackingFn(node, entityType); |
| 15023 | } |
| 15024 | if (meta.nodeId) { |
| 15025 | mc.refMap[meta.nodeId] = node; |
| 15026 | } |
| 15027 | return node; |
| 15028 | } else { |
| 15029 | if (entityType.isComplexType) { |
| 15030 | // because we still need to do serverName to client name processing |
| 15031 | return processNoMerge(mc, entityType, node); |
| 15032 | } else { |
| 15033 | return mergeEntity(mc, node, meta); |
| 15034 | } |
| 15035 | } |
| 15036 | } else { |
| 15037 | if (typeof node === 'object' && !__isDate(node)) { |
| 15038 | node = processAnonType(mc, node); |
| 15039 | } |
| 15040 | |
| 15041 | // updating the refMap for entities is handled by updateEntityRef for entities. |
| 15042 | if (meta.nodeId) { |
| 15043 | mc.refMap[meta.nodeId] = node; |
| 15044 | } |
| 15045 | return node; |
| 15046 | } |
| 15047 | } |
| 15048 | |
| 15049 | function processNoMerge(mc, stype, node) { |
| 15050 | var result = {}; |
no test coverage detected