breeze2-odata4
Version:
Library to allow OData 4 support for breezejs 2
62 lines • 2.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var breeze_client_1 = require("breeze-client");
function getJsonResultsAdapter() {
var adapter = new breeze_client_1.JsonResultsAdapter({
name: 'OData4',
visitNode: visitNode
});
return adapter;
function visitNode(node, mappingContext, nodeContext) {
var result = {};
var metadataStore = mappingContext.entityManager.metadataStore;
var workingNode = node;
var nodeODataType;
if (node === null) {
return result;
}
var entityType;
var entityTypeName;
if (nodeContext.nodeType === 'root') {
if (mappingContext.query) {
var eq = mappingContext.query;
if (eq.resultEntityType instanceof breeze_client_1.EntityType && eq.resultEntityType) {
entityType = eq.resultEntityType;
}
else {
entityTypeName = metadataStore.getEntityTypeNameForResourceName(eq.resourceName);
}
}
else {
nodeODataType = node['@odata.type'];
entityTypeName = breeze_client_1.MetadataStore.normalizeTypeName(nodeODataType.replace('#', ''));
}
}
else if (nodeContext.nodeType === 'navProp' ||
nodeContext.nodeType === 'navPropItem') {
entityTypeName = nodeContext.navigationProperty.entityTypeName;
}
entityType =
entityType ||
(entityTypeName &&
metadataStore.getEntityType(entityTypeName, true));
if (entityType) {
result.entityType = entityType;
result.extraMetadata = {};
}
if (workingNode.results) {
result.node = workingNode.results;
}
var propertyName = nodeContext.propertyName;
result.ignore =
workingNode.__deferred != null ||
propertyName === '__metadata' ||
(propertyName === 'EntityKey' &&
workingNode.$type &&
breeze_client_1.core.stringStartsWith(workingNode.$type, 'System.Data'));
result.ignore = false;
return result;
}
}
exports.getJsonResultsAdapter = getJsonResultsAdapter;
//# sourceMappingURL=breeze-jsonResultsAdapter-factory.js.map