abap-adt-api
Version:
Interface to Abap Developer Tools webservice
38 lines (37 loc) • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.objectStructure = exports.isClassStructure = exports.isClassMetaData = void 0;
const AdtException_1 = require("../AdtException");
const utilities_1 = require("../utilities");
function isClassMetaData(meta) {
return meta["class:visibility"] !== undefined;
}
exports.isClassMetaData = isClassMetaData;
function isClassStructure(struc) {
return isClassMetaData(struc.metaData);
}
exports.isClassStructure = isClassStructure;
const convertIncludes = (i) => {
const imeta = (0, utilities_1.xmlNodeAttr)(i);
const links = i["atom:link"].map(utilities_1.xmlNodeAttr);
return { ...imeta, links };
};
async function objectStructure(h, objectUrl, version) {
(0, AdtException_1.ValidateObjectUrl)(objectUrl);
const qs = version ? { version } : {};
const response = await h.request(objectUrl, { qs });
const res = (0, utilities_1.fullParse)(response.body);
// return type depends on object type, but always have a single root
const root = (0, utilities_1.xmlRoot)(res);
const attr = (0, utilities_1.xmlNodeAttr)(root);
attr["adtcore:changedAt"] = Date.parse(attr["adtcore:changedAt"]) || 0;
attr["adtcore:createdAt"] = Date.parse(attr["adtcore:createdAt"]) || 0;
const links = (0, utilities_1.xmlArray)(root, "atom:link").map(utilities_1.xmlNodeAttr);
const metaData = attr;
if (isClassMetaData(metaData)) {
const includes = (0, utilities_1.xmlArray)(root, "class:include").map(convertIncludes);
return { objectUrl, metaData, includes, links };
}
return { objectUrl, metaData, links };
}
exports.objectStructure = objectStructure;